如果我在Unix上有一个.gz文件,它有一定的行数。我如何才能在不解压缩的情况下计算unix上的行数。
如果不提取存档,则无法计算行数。
—
zoli2k
如果我在Unix上有一个.gz文件,它有一定的行数。我如何才能在不解压缩的情况下计算unix上的行数。
Answers:
如果文件仍然被压缩,显然您不能计算换行符。
但是您可以解压缩为流,并计算该流中的换行符,而无需将(解压缩的)文件写入磁盘。那将是这样的:
zcat file.gz | wc -l
zcat用于解压缩&cat,wc用于wordcount。如果您想了解更多信息,请参见手册页。
编辑
如果您没有zcat,则zcat只是的别名gunzip -c
。
gzip
与compress
您不同的Unices上,您想要gzcat
。
如果您想快速完成此操作,建议您使用“ pigz”(IIRC代表“ GZip的并行实现”)。我也有类似的情况,我想计算一堆gzip文件中的行数,这是我的解决方案:
for x in *.gz; do unpigz -p 8 -c $x | wc -l && echo $x; done
这给了我行数和使用8个处理器的交替行计数的文件。它跑得很快!
for x in *.fastq.gz; do zcat "$x" | wc -l && echo $x; done
使用以下命令:
gzgrep -c $ filename.gz
该命令的gzgrep
行为与grep
gzip压缩文件相同。它会为正则表达式匹配动态地解压缩文件。
在这种情况下,请-c
指示命令输出匹配的行数,并且正则表达式$
匹配行尾,因此它匹配每一行或文件。
最终结果与相同gzip -dc filename.gz | grep -c $
。
gzgrep
可用在其他系统上的Solaris相比?