user663724
user663724

Reputation:

How to use tail in combination with sed .

I want to beep a Sound , incase there is any Exception ocured in Log Files .

I am using bash script .

But unfortunately when tail is used in combintaion with sed , it doesn't work .

I have tried with the below commands and posting here .

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/'

Upvotes: 24

Views: 14487

Answers (1)

ruakh
ruakh

Reputation: 183321

The problem is that grep sees that it's not writing to the terminal, so it buffers its output, eventually writing big chunks that sed can process all at once. To tell it to print out lines as soon as they're available, use the --line-buffered option:

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

(Note that I've also added the -u flag to sed, which is similar to grep's --line-buffered option. In my testing it didn't seem to make a difference for this command, but I figure it's better to include it just in case.)

Upvotes: 40

Related Questions