行数を素早く数える

行数を素早く数える

私は Windows 7 を実行しており、GnuWin32 を持っています。LF ( \n) 行末を持つ数ギガバイトのテキスト ファイルがあります。このファイルの行数を知りたいのですが (または、LF がいくつあるか知りたいのですが、これは 1 つ少ないかもしれませんが、気にしません)。この答えを得るための最も速くて最も安価な方法は何ですか?

いくつかの可能性(ただし、いくつか見逃している可能性もあると思います):

  • wc -l foo
  • grep -c $ foo( を使用すると-c、一致する行の数だけ出力されます)
  • grep -c ^^ foo(最初のキャレットは 2 番目のキャレットをエスケープします)
  • sed -n $= foo(-n行の印刷を防止します。$最後の行に制限します。=行番号を印刷します)

(これらは GnuWin32 ユーティリティです。Windows ネイティブの方法は知りません。)

答え1

Windows コマンドラインソリューション

type foo | find "" /v /c

PowerShellソリューション

(get-content foo | measure-object -line).lines

(dir foo | select-string .).count

(type foo).count

(gc foo | measure-object | select count).count

パールソリューション

perl -pe '}{$_=$.' foo

awkソリューション

awk 'END { print NR }' foo

参考文献

答え2

私にとって最も速いのはコマンドラインです:find /v /c "" foo.txt

まだ適切なベンチマークはしていませんが、2GBのRAMサーバーで10GBのファイルを試してみましたtype(get-content foo | measure-object -line)、完了するまでに時間がかかりすぎました。ただし、Findは十分に速く戻りました。

関連情報