我正在尝试创建一个监控脚本并在发生特殊事件时联系指定的人,下面的第一个egrep
代码工作正常但第二个根本没有工作,请帮助:
while true; do
tail -f /Testing/script/errors | egrep -o --line-buffer "Timeout" >> wch.txt;
cat /Testing/script/contacts.txt|egrep --line-buffer "FB" | cut -f2 -d ":" >> mail.txt;
sleep 5
done
contact.txt:
FB:Kh.ismail014@gmail.com 谷歌:Amr.elrefaie@gmail.com
答案 0 :(得分:0)
没有--line-buffer
这样的选项,也许你的意思是--line-buffered
,它是一个GNU主义。
第二个grep
可以简化为:
grep --line-buffered 'FB' /Testing/script/contacts.txt | cut -f2 -d ":" >> mail.txt
您没有使用任何扩展正则表达式模式,因此使用egrep
(grep -E
)毫无意义。此外,您不需要cat
,并且管道,grep
将文件名作为参数。
同样,第一个grep
可以写成:
tail -f /Testing/script/errors | grep -o --line-buffered "Timeout" >> wch.txt
所以你的while
构造:
while :; do
tail -f /Testing/script/errors | egrep -o --line-buffer "Timeout" >> wch.txt
grep --line-buffered 'FB' /Testing/script/contacts.txt | cut -f2 -d ":" >> mail.txt
sleep 5
done
答案 1 :(得分:0)
第二行中的-f
标志阻止了循环。随着文件的增长,输出会在/Testing/script/errors
附加新行。