日志会产生错误。它为1个错误生成两条非常相似的行 我想grep这些错误,但只有一行
例如:
行是:3月21日15:33:04 VMP05 SMC_User:FATAL ECSDPROD 5210 / SUPPORT / ECSD 21/03/17 15:33:04 VMD25 DIR_CHECK 0致命文件/ data1 / gmq6 / in / 29920991077061超过10分钟老了
行是:3月21日15:33:04 VMP05 SMC_User:FATAL ECSDPROD 5210 / SUPPORT / ECSD 21/03/17 15:33:04 VMD18 DIR_CHECK 0致命文件/ data1 / sftp / out / 26515991064454超过10分钟老了
Mar 21 15:33:04 VMP05 SMC_User:FATAL ECSDPROD 5210 / SUPPORT / ECSD 21/03/17 15:33:04 VMD25 DIR_CHECK 0致命文件/ data1 / gmq6 / in / 29920991077061超过10分钟< / p>
Mar 21 15:33:04 VMP05 SMC_User:FATAL ECSDPROD 5210 / SUPPORT / ECSD 21/03/17 15:33:04 VMD18 DIR_CHECK 0 FATAL文件/ data1 / sftp / out / 26515991064454超过10分钟< / p>
但我只想在没有&#39; Line is&#39;的情况下使用grep。我正在使用Hewlett Packard Linux
编辑: 在尾部-f:
中需要这个grepinterface TokenAuthenticatedController
上面的尾部没有更新,脚本一直到回声&#34;检查新的致命因素&#34;然后它不会拖尾日志
答案 0 :(得分:0)
也许this有帮助。
tail -f /data1/log/startstop/MonitorDaemon.log | grep --line-buffered "FATAL ECSD" | grep -v "Line is"
详细说明:您可以在一个命令中多次使用管道符号(|
)!
答案 1 :(得分:0)
我想我可以通过使用awk和grep的组合来解决这个问题。 我正在测试它,但到目前为止它的工作原理。
#!/usr/bin/ksh
echo "Checking For The Last 5 Fatals"
grep "FATAL ECSDPROD" /data1/log/startstop/MonitorDaemon.log|tail > /tmp/AH/linesDP.txt
grep "FATAL ECSD" /tmp/AH/linesDP.txt | grep -v "Line is"
echo "\n\n----------\n"
echo "Checking For New Fatals"
tail -f /data1/log/startstop/MonitorDaemon.log | awk '/FATAL ECS/' | grep -v "Line is"
echo "about to exit"
exit 0