I'm looking to write to a file after piping output from tail -f through to grep. Say,write to a file "temp" for all lines with "Playing:" within in error_log "FreeSwitch.log".
tail -f "/var/lof/freeswitch/freeswitch.log" | grep "Playing:" > temp
but not working ! It is a centos 5.5
grep is very often used as a "filter" with other commands. It allows you to filter out useless information from the output of commands. To use grep as a filter, you must pipe the output of the command through grep . The symbol for pipe is " | ".
To grep the output of tail simply tell the grep command to red from stdin and pipe the output from tail to grep as follows.
Maybe you have an issue with buffering? See BashFAQ: What is buffering?
You could e.g. try:
tail -f /var/lof/freeswitch/freeswitch.log | grep --line-buffered "Playing:" > temp
-f, --follow[={name|descriptor}]
output appended data as the file grows;
It scans the file as it grows. And it is a process with an interval. You can only interrupt it.
Use parameter:
-c, --bytes=K
output the last K bytes; alternatively, use -c +K to output bytes starting with the Kth of each file
or
-n, --lines=K
output the last K lines, instead of the last 10; or use -n +K to output lines starting with the Kth
EDIT: as bmk said:
grep --line-buffered
think it will help you
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With