我正在拖尾文件输出和grepping行与某些数据。 我不想将数据输出到屏幕上,而是计算它find的实例的数量并将其发送到屏幕。 实例的数量可以滚动和递增,也可以覆盖现有的,只显示它,因为它增加更高。 这部分并不重要,我只需要find一个运行的实例。
我现在的命令是
tail -f logfile | grep'我想要的数据'
我曾尝试使用grep -c和wc -l,但没有任何结果给我。 这个特定的Linux发行版没有PV,也无法获得它。 有什么办法可以做到这一点?
GNU awk可以很容易地做到这一点。
滚动输出:
tail -f logfile | grep 'stuff to grep for' | awk '{++i;print i}'
你也可以省略grep,并使用awk的正则expression式代替:
tail -f logfile | awk '/stuff to grep for/ {++i;print i}'
对于单行输出,你可以预先设置一个CR使它再次从行的前面开始(在控制台上工作):
tail -f logfile | awk '/stuff to grep for/ {++i;printf "\r%d",i}'
总是有值得信赖的watch
选项:
watch -d grep -c "string" /path/to/file
当你的文件大小超过几百MB时,这是理想的。
感谢@ sa289build议使用中间文件:
tail -f /path/to/file |grep "string" > /tmp/intermediate-file & watch -d grep -c "string" /tmp/intermediate-file