计算压缩文件中的行数

Vij*_*jay 54 unix command-line

如果我在 unix 上有一个 .gz 文件,它有一定数量的行。我如何在不解压缩的情况下计算 Unix 上的行数。

小智 73

如果文件仍然被压缩,您显然不能计算换行符。

但是您可以解压缩到一个流,并计算该流中的换行符,而无需将(解压缩的)文件写入磁盘。那会是这样的:

zcat file.gz | wc -l
Run Code Online (Sandbox Code Playgroud)

zcat 用于解压和 cat,wc 用于 wordcount。如果您想了解更多信息,请参阅两者的手册页。

编辑

如果您没有 zcat,那么 zcat 只是gunzip -c.

  • 在`gzip` 不同于`compress` 的Unices 上,你需要`gzcat`。 (7认同)

小智 10

这似乎也有效 - grep 表示文件中的行尾数

zgrep -Ec "$" file.gz
Run Code Online (Sandbox Code Playgroud)


小智 7

如果您想快速完成,我建议使用“pigz”(IIRC 代表“GZip 的并行实现”)。我只是遇到了类似的情况,我想计算一堆 gzip 文件中的行数,这是我的解决方案:

for x in *.gz; do unpigz -p 8 -c $x | wc -l && echo $x; done
Run Code Online (Sandbox Code Playgroud)

这给了我使用 8 个处理器在交替行上计数的行数和文件。它跑得很快!