Bash-在每个grep对应关系上运行命令而不停止尾部-n0 -f
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Bash-在每个grep对应关系上运行命令而不停止尾部-n0 -f相关的知识,希望对你有一定的参考价值。
我正在监视日志文件,我的最终目标是编写一个使用tail -n0 -f
的脚本,并在grep
找到对应关系后执行某个命令。我目前的代码:
tail -n 0 -f $logfile | grep -q $pattern && echo $warning > $anotherlogfile
这只能工作一次,因为grep -q在找到匹配时会停止。脚本必须继续搜索并运行命令,因此我可以更新状态日志并运行另一个脚本来自动修复问题。你能给我一个提示吗?
谢谢
答案
使用while循环
tail -n 0 -f "$logfile" | while read LINE; do
echo "$LINE" | grep -q "$pattern" && echo "$warning" > "$anotherlogfile"
done
另一答案
awk
将让我们继续处理线条并在找到模式时采取行动。就像是:
tail -n0 -f "$logfile" | awk -v pattern="$pattern" '$0 ~ pattern {print "WARN" >> "anotherLogFile"}'
如果你需要传递警告信息和anotherLogFile
路径,你可以使用更多的-v
标志来awk
。此外,你可以让awk
采取你想要的行动。它可以通过system()
函数运行命令,您可以在其中传递shell命令来运行
以上是关于Bash-在每个grep对应关系上运行命令而不停止尾部-n0 -f的主要内容,如果未能解决你的问题,请参考以下文章