如何结合sed使用tail.

15 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/'
Run Code Online (Sandbox Code Playgroud)

rua*_*akh 28

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

tail -f mylogs.log \
  | grep --line-buffered Exception \
  | sed -u -e $'s/Exception/Exception\a/'
Run Code Online (Sandbox Code Playgroud)

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

  • @Kiran:这是一个完全独立的问题.如果`echo $'\ a''没有给你发出嘟嘟声,那么,这可能是一个设置 - 这可能*不是*询问它的网站. (2认同)
  • 虽然`sed -u`在这种情况下没有区别,但是如果你想将它传递给另一个程序它是非常有用的 (2认同)