当输入完成(比如一个文件)时,我们可以这样做:
cat file | grep -o memory=[3-9] | sort -u
但sort
不能与流一起使用:
tail -f server.log | grep -o memory=[3-9] | sort -u
server.log
可以是无限流(实时日志)。上述命令可以持续数小时。
我怎样才能通过将另一个工具添加到管道中来汇总结果,或者以某种方式使其sort
发挥作用?
或者:
除了在那里进行 grepping 之外,还有什么替代方案,grep
但同时将参数传递到下一步 - 管道的下一个工具。我不确定管道是否允许这样做。
也许管道的第二部分必须是组合的(就像同时执行 grep + sort 一样)
我只对命令行方法感兴趣。
它可能类似于watch
,但更新先前的结果。
例如:不要看到很多这样的行:
memory=4
memory=4
memory=4
memory=4
memory=2
...
我只想看到:
memory=4
memory=2
上面的输出是简化的,我想强调这种输出的聚合是我的主要问题。
答案1
可行的解决方案是:
$ tail -f infinite_server.log | grep -o memory=[3-9] > output &
然后
$ watch "cat output | sort -u"