22

我想发出哔声,以防日志文件中出现任何异常。

我正在使用 bash 脚本。

但不幸的是,当 tail 与 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/'
4

1 回答 1

35

问题是它grep看到它没有写入终端,所以它缓冲它的输出,最终写入可以一次处理的大块sed。要告诉它在行可用时立即打印出来,请使用以下--line-buffered选项:

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

(请注意,我还向 ' 添加了-u标志sed,这类似于grep'--line-buffered选项。在我的测试中,它似乎对这个命令没有影响,但我认为最好包含它以防万一。)

于 2013-03-10T18:09:25.273 回答