web-dev-qa-db-ja.com

wc -l出力からファイル名を削除する方法は?

wc -lを使用してファイル内の行数をカウントしたいのですが、次のスペースとファイル名なしで、その数だけを出力します。コメントから編集:ファイル名には数字が含まれている場合があります。

現在、私がしている場合:

wc -l /path/to/file

176行のファイルでは、出力は次のとおりです。

176 /path/to/file

これはbashスクリプト内にあり、結果の数値は変数の値として割り当てられます。

4
Arronical

私は使用します:

<file wc -l

cat file | wc -lに相反して、シェルをフォークして別のプロセスを実行する必要はありません(より高速に実行されます)。

% time </tmp/ramdisk/file wc -l     
8000000
wc -l < /tmp/ramdisk/file  0,07s user 0,06s system 97% cpu 0,132 total
% time cat /tmp/ramdisk/file | wc -l
8000000
cat /tmp/ramdisk/file  0,01s user 0,16s system 80% cpu 0,204 total
wc -l  0,09s user 0,10s system 94% cpu 0,203 total

/tmp/ramdisk/fileは、I/Oとキャッシュを式から外すためにRAMディスクに格納されていました。)

ただし、実際には小さなファイルの場合、違いは無視できます。


さらに別の方法は次のとおりです。

wc -l file | cut -d ' ' -f 1

私のテストでは、<file wc -lとほぼ同じ性能を発揮します。

8
kos

Catを使用して、シンプルなライナーでこれを行うことができます。 cat deluge1.log | wc -l

簡単に答えてください。長く描かれた答えは必要ありません。

5
Elder Geek