write to a file after piping output from tail -f through to grep
I'm looking to write to a file after piping output from tail -f through to grep. Say,write to a file 开发者_JAVA技巧"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
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
Did you put the file name after the >
?
tail -f /var/lof/freeswitch/freeswitch.log | grep "Playing:" > temp
thanks for your help.
here is my code to insert into mysql with the word "error":
tail -f /var/log/httpd/error_log | \
grep -E --line-buffered "error" | \
while read line; do \
#echo -e "MY LINE: ${line}"; done
echo "INSERT INTO logs (logid,date,log) VALUES (NULL, NOW(), '${line}');" | mysql -uUSERDB -pPASSDB DBNAME; done
精彩评论