【问题标题】:Continuous count on bash grep with tail连续计数 bash grep with tail
【发布时间】:2014-04-10 16:08:20
【问题描述】:

在这个问题 How to 'grep' a continuous stream? 中,我们可以对特定文件进行连续的 grep。

但是如何计算 grep 的结果。

我尝试过这样的事情,但没有运气

tail -f logs/log* | grep --line-buffered -c "pattern in here"

编辑:

好的,假设我有一个日志文件,如果某些操作完成,它会不断地将“成功”一词附加到文件中。

因此,日志文件看起来像这样:

{date} ==> error
{date} ==> error
{date} ==> error
{date} ==> success
{date} ==> error
{date} ==> success

它是连续的,现在我想连续跟踪所有日志中“成功”的计数

例如

log1 ===> 3
log2 ===> 4
log3 ===> 2

这可能吗?

【问题讨论】:

  • 那么您希望输出是什么样的?只是计数从 2 增加到 3 到 4 到....? (我不认为这是可能的)。请在您的问题中编辑您需要的结果。祝你好运。
  • 在查看完所有文件之前,您希望 grep 如何告诉您在文件中查看了多少模式?

标签: bash shell terminal prompt


【解决方案1】:

试试这个:

#!/bin/bash
set -m

# Set up control-C trap to kill all children
trap '{ echo "Interrupted." ; pkill -P $$; exit 1; }' SIGINT

for f in logs/log*
do
   tail -f "$f" | awk -v f="$f" '/success/{printf "%s: %s - %d\n",f,$0,++i}' &
done
wait   # So we can be interrupted and then kill our children

【讨论】:

  • 我已经更新了这个,所以你可以看到所有被跟踪的日志的名称,并且每个日志都有匹配的运行计数。
  • 这对你有用吗?如果是这样,您能否考虑接受我的回答,以便我得到一个可爱的绿色大勾号。如果没有,请说出什么不起作用,以便我或其他人可以进一步帮助您。谢谢。
猜你喜欢
  • 2017-07-13
  • 2017-10-17
  • 2013-01-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-02-04
  • 1970-01-01
相关资源
最近更新 更多