我有一个非常我正在使用grep
处理大型压缩文件。打印行号模1000000
zcat blah.gz | grep -e pattern | gzip -c > pattern.gz
我想打印的东西stderr
为每处理万条左右输入线,只是为了跟踪进度。有任何想法吗?
我有一个非常我正在使用grep
处理大型压缩文件。打印行号模1000000
zcat blah.gz | grep -e pattern | gzip -c > pattern.gz
我想打印的东西stderr
为每处理万条左右输入线,只是为了跟踪进度。有任何想法吗?
尝试pv
。它默认为字节,但有一个开关来使它成为线。
更换的grep有:
perl -ne 'print if /pattern/; print STDERR "." if $. % 1000000 == 0'
的mbuffer(1)
工具可能是东西给你。引用一些摘要:
mbuffer工具用于缓冲数据流并向用户显示I/O速率和摘要。这对于将备份写入 快速磁带驱动器或通过网络进行流式传输尤其有用。如果使用得当, 它可以防止缓冲区欠载并加速整个备份或传输过程。
运行它通过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
...干杯! ......现在我只希望有一个'zpv'。 – badroit
没有'zpv'我知道,但是因为'pv'与二进制数据一起工作,您可以切换它和'zcat':'pv infile [s] | zcat | grep ...',并且因为它可以告诉文件的大小,你应该得到一个确定的进度条和一个相当准确的ETA。 – Kevin