エディターやビューアーアプリケーションでファイルを開かずに、テキストファイルに含まれる行数を見つけるにはどうすればよいですか?番号を確認するための便利なUnixコンソールコマンドはありますか?
確かにあります。これはwc
と呼ばれ、もともとはワードカウントと思われますが、行、単語、文字、バイト(および一部の実装では、最長の行の長さまたは最も広い行の表示幅)を実行できます1)。 -l
オプションは、行数を数えるように指示します(実際には、改行文字を数えるので、適切に区切られた行のみ):
wc -l mytextfile
または、行数のみを出力するには:
wc -l < mytextfile
(一部の実装では、その数の前に空白が挿入されることに注意してください)。
別のオプションは、grep
を使用して、パターンが一致する回数を見つけることです。
grep --regexp="$" --count /path/to/myfile.txt
この例では、
$
は、新しい行に評価される式です(Enterボタンが押されます)。--count
は、一致の通常の出力を抑制し、一致した回数を表示します。/path/to/myfile.txt
はかなり明白です。編集:コメントで@hesseが述べたように、これは以下のように短縮できます。
grep -c $ path/to/file
これにより、GNU grep
実装への移植性も標準化されます。
また、何らかの理由でawk
を使用しない場合は、純粋なwc
でこれを実行するのは非常に簡単です。
$ awk 'END { print NR }' /path/to/file
上記のprint
sは、/path/to/file
にあるファイルに存在するレコード(NR
)の数です。
注:wc
とは異なり、これはファイルの名前を出力しません。したがって、数値のみが必要な場合は、これはcat file | wc -l
の代わりに使用できます。
@Kevinが示唆したように、wc
コマンドを使用して、ファイル内の行をカウントできます。しかしながら、 wc -l test.txt
は結果にファイル名を含めます。以下を使用できます。
wc -l < test.txt
ファイル名を含まない行数を取得するだけです。試してみる。
私のテストに従って、AWKが他のツール(GREP、SED、AWK、Perl、WC)よりもはるかに高速であることを確認できます
これは私がここで実行したテストの結果です
date +%x_%H:%M:%S; grep -c $ my_file.txt; date +%x_%H:%M:%S;
10/03/16_09:41:51 24579427 10/03/16_09:42:40〜49秒
date +%x_%H:%M:%S; wc -l my_file.txt; date +%x_%H:%M:%S;
10/03/16_09:35:05 24579427 my_file.txt 10/03/16_09:35:45〜40秒
date +%x_%H:%M:%S; sed -n '$=' my_file.txt; date +%x_%H:%M:%S;
10/03/16_09:33:50 24579427 10/03/16_09:34:29〜39秒
date +%x_%H:%M:%S; Perl -ne 'END { $_=$.;if(!/^[0-9]+$/){$_=0;};print "$_" }' my_file.txt; date +%x_%H:%M:%S;
10/03/16_09:36:11 24579427 10/03/16_09:36:36〜25秒
date +%x_%H:%M:%S; awk 'END { print NR }' my_file.txt; date
+%x_%H:%M:%S;
10/03/16_09:43:36 24579427 10/03/16_09:43:58〜22秒