如何结合sed使用tail。

时间:2013-03-10 17:58:00

标签: bash

我想发出声音,因为日志文件中有任何异常。

我正在使用bash脚本。

但不幸的是,当尾部用于与sed组合使用时,它不起作用。

我已尝试使用以下命令并在此处发布。

tail -f mylogs.log | grep "Exception" | sed -e $'s/Exception/Exception\a/'



tail -f mylogs.log  | sed -e $'s/Exception/Exception\a/'



tail -f mylogs.log  | grep "Exception" | sed -e $'s/Exception/Exception\a/'

1 个答案:

答案 0 :(得分:28)

问题是grep看到它没有写入终端,所以它缓冲了它的输出,最终编写了sed可以同时处理所有内容的大块。要告诉它一旦可用就打印出来,请使用--line-buffered选项:

tail -f mylogs.log \
  | grep --line-buffered Exception \
  | sed -u -e $'s/Exception/Exception\a/'

(请注意,我还将-u标记添加到sed,这类似于grep的{​​{1}}选项。在我的测试中,它没有似乎对这个命令有所作为,但我认为最好包括它以防万一。)