快速数行

快速数行

我运行的是 Windows 7 并安装了 GnuWin32。我有一个几 GB 的文本文件,其中有 LF ( \n) 行尾。我想知道它有多少行(或者有多少个 LF,也就是说,少一个,但我不在乎)。获取答案的最快或最便宜的方法是什么?

有一些可能性(尽管我确信我遗漏了一些):

  • wc -l foo
  • grep -c $ foo(使用-c, 仅打印匹配的行数)
  • grep -c ^^ foo(第一个插入符号避开第二个插入符号)
  • 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 解决方案

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

awk 解决方案

awk 'END { print NR }' foo

进一步阅读

答案2

对我来说最快的是命令行:find /v /c "" foo.txt

我还没有做过适当的基准测试,但我尝试type(get-content foo | measure-object -line)2GB RAM 服务器上测试 10GB 文件,但花了太长时间才完成。不过 Find 返回的速度足够快

相关内容