我运行的是 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
进一步阅读
- Windows CMD 命令行的 AZ 索引- 与 Windows cmd 行相关的所有事物的绝佳参考。
- 寻找- 在文件中搜索文本字符串并显示找到该字符串的所有行。
- Windows PowerShell 命令的 AZ 索引- 与 PowerShell 相关的所有内容的绝佳参考。
答案2
对我来说最快的是命令行:find /v /c "" foo.txt
我还没有做过适当的基准测试,但我尝试type
在(get-content foo | measure-object -line)
2GB RAM 服务器上测试 10GB 文件,但花了太长时间才完成。不过 Find 返回的速度足够快