我正在使用grep
处理非常大型压缩文件。
zcat blah.gz | grep -e pattern | gzip -c > pattern.gz
我希望为处理的每一百万左右的输入行打印一些内容到stderr
,以便跟踪进度。有什么想法吗?
答案 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速率和 总结给用户。它对于编写备份特别有用 快速磁带驱动器或通过网络传输它们。如果使用正确, 它可以防止缓冲区欠载并加速整个备份或 转移过程。