web-dev-qa-db-ja.com

文書内の行数を数える方法

私はこれらのような線を持っています、そして、私は私が実際に持っている線の数を知りたいです...

09:16:39 AM  all    2.00    0.00    4.00    0.00    0.00    0.00    0.00    0.00   94.00
09:16:40 AM  all    5.00    0.00    0.00    4.00    0.00    0.00    0.00    0.00   91.00
09:16:41 AM  all    0.00    0.00    4.00    0.00    0.00    0.00    0.00    0.00   96.00
09:16:42 AM  all    3.00    0.00    1.00    0.00    0.00    0.00    0.00    0.00   96.00
09:16:43 AM  all    0.00    0.00    1.00    0.00    1.00    0.00    0.00    0.00   98.00
09:16:44 AM  all    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00  100.00
09:16:45 AM  all    2.00    0.00    6.00    0.00    0.00    0.00    0.00    0.00   92.00

Linuxコマンドを使ってそれらすべてを数える方法はありますか?

899
Alucard

wcを使う:

wc -l <filename>

これは<filename>の行数を出力します。

$ wc -l /dir/file.txt
3272485 /dir/file.txt

または、結果から<filename>を省略するには、wc -l < <filename>を使用します。

$ wc -l < /dir/file.txt
3272485

データをwcにパイプすることもできます。

$ cat /dir/file.txt | wc -l
3272485
$ curl yahoo.com --silent | wc -l
63
1691
user85509

すべての行を数えるには

$ wc -l file

パターンを使用して行のみをフィルタリングしてカウントするには、次のようにします。

$ grep -w "pattern" -c file  

または-vを使用して一致を反転します。

$ grep -w "pattern" -c -v file 

-e、-i、および-x引数を調べるには、grepのマニュアルページを参照してください。

130
Lauro Oliveira
wc -l <file.txt>

または

command | wc -l
67
John Kugelman

いろいろな方法があります。 wcを使うことは一つです。

wc -l file

その他

awk 'END{print NR}' file

sed -n '$=' file(GNU sed)

grep -c ".*" file
42
ghostdog74

ツールwcは、UNIXおよびUNIX系オペレーティングシステムの「ワードカウンター」です。-lオプションを追加することで、ファイル内の行数を数えるためにも使用できます。したがって、wc -l foofoo内の行数を数えます。次のようなプログラムからパイプで出力することもできます:ls -l | wc -l。これはカレントディレクトリにいくつのファイルがあるかを教えてくれます。

24
theunamedguy

ディレクトリ内の全ファイルの合計行を確認したい場合は、findとwcを使用できます。

find . -type f -exec wc -l {} +
22
storen

wcを使う:

wc -l <filename>
21
Vivin Paliath

必要なのが行数だけであれば(行数と戻ってくるバカなファイル名ではなく):

wc -l < /filepath/filename.ext

前述のように、これらも機能します(ただし、他の理由で劣っています)。

awk 'END{print NR}' file       # not on all unixes
sed -n '$=' file               # (GNU sed) also not on all unixes
grep -c ".*" file              # overkill and probably also slower
13
ggb667

私はこれを使っています:

cat myfile.txt | wc -l

それはファイル名を表示しないので、私はそれが受け入れられた答えよりもそれを好む、そしてあなたはそれを修正するためにawkを使う必要はない。受け入れられている答え:

wc -l myfile.txt

しかし、私はGGB667の答えが一番いいと思います。

wc -l < myfile.txt

私はおそらく今後使用する予定です。私のやり方より少し短いです。誰かがそれを好む場合に備えて、私は古いやり方をしています。出力はこれら2つの方法と同じです。

7
Buttle Butkus

このようにnlを使用してください。

nl filename

man nlから:

行番号を追加して、各FILEを標準出力に書き出します。 FILEがない場合、またはFILEが - の場合は、標準入力を読みます。

6
decimal

複数のファイル行を数える方法を探しているときにこの質問を見ました。したがって、.txtファイルの複数のファイル行を数えたい場合は、次のようにします。

cat *.txt | wc -l

1つの.txtファイルでも実行されます。

5
talsibony

上記の方法が推奨されますが、 "cat"コマンドも役立ちます。

cat -n <filename>

ファイルの全内容を行番号で表示します。

5
Yogi
wc -l file.txt | cut -f3 -d" "

行数だけを返します

4
Umur Kontacı
cat file.log | wc -l | grep -oE '\d+'
  • grep -oE '\d+':桁数を返すために _のみ_
4
AechoLiu

以下のように、ファイルの出力をwc -lにリダイレクト/パイプするだけで十分です。

cat /etc/fstab | wc -l

それからそれはいいえを提供します。行のみ。

3
tk3000

または、ファイル名のパターンを持つサブディレクトリ内のすべての行を数えます(例:ファイル名にタイムスタンプを含むログファイル)。

wc -l ./**/*_SuccessLog.csv
2
jwebuser

私はこれが old であることを知っていますが、それでも: フィルタリングされた行数をカウントします

私のファイルはこんな感じです:

Number of files sent
Company 1 file: foo.pdf OK
Company 1 file: foo.csv OK
Company 1 file: foo.msg OK
Company 2 file: foo.pdf OK
Company 2 file: foo.csv OK
Company 2 file: foo.msg Error
Company 3 file: foo.pdf OK
Company 3 file: foo.csv OK
Company 3 file: foo.msg Error
Company 4 file: foo.pdf OK
Company 4 file: foo.csv OK
Company 4 file: foo.msg Error

送信されたファイル数を知りたい場合は、

grep "OK" <filename> | wc -l

OR

grep -c "OK" filename

私はちょうどこれを行うためのプログラムを作りました(nodeを使って)

npm install gimme-lines
gimme-lines verbose --exclude=node_modules,public,vendor --exclude_extensions=html

https://github.com/danschumann/gimme-lines/tree/master

1
Funkodebat

行数を数えて結果を変数に格納するには、次のコマンドを使用します。

count=$(wc -l < file.txt) echo "Number of lines: $count"

1
Konstantin F

他の人が言ったようにwc -lが最善の解決策ですが、将来の参考のためにあなたはPerlを使うことができます:

Perl -lne 'END { print $. }'

$.は行番号を含み、ENDブロックはスクリプトの最後に実行されます。

0
Majid Azimi