打印行号以模数1000000

时间:2011-10-31 20:21:56

标签: linux unix command-line

我正在使用grep处理非常大型压缩文件。

zcat blah.gz | grep -e pattern | gzip -c > pattern.gz

我希望为处理的每一百万左右的输入行打印一些内容到stderr,以便跟踪进度。有什么想法吗?

4 个答案:

答案 0 :(得分:4)

试试pv。它默认为字节,但是有一个开关可以使它成行。

答案 1 :(得分:4)

将grep替换为:

perl -ne 'print if /pattern/; print STDERR "." if $. % 1000000 == 0'

答案 2 :(得分:3)

通过awk运行:

zcat blah.gz | awk 'BEGIN {x = 1}; {if ((x++ % 1000000) == 0) print x " " $0 > "/dev/stderr"; print $0 }' | grep -e pattern | gzip -c > pattern.gz

答案 3 :(得分:1)

mbuffer(1)工具可能适合您。引用一些摘要:

  

mbuffer工具用于缓冲数据流并显示I / O速率和    总结给用户。它对于编写备份特别有用    快速磁带驱动器或通过网络传输它们。如果使用正确,    它可以防止缓冲区欠载并加速整个备份或    转移过程。