尾巴,grep和计数在一个命令中find的实例?

我正在拖尾文件输出和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