web-dev-qa-db-ja.com

行をすばやくカウントする

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

いくつかの可能性(私はいくつかが欠けていると確信していますが):

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

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

3
msh210

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ソリューション

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

awkソリューション

awk 'END { print NR }' foo

参考文献

3
DavidPostill

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

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

0
Chibueze Opata