日志中的类似行,只想要grep 1

时间:2017-03-21 15:48:46

标签: grep

日志会产生错误。它为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:

中需要这个grep
interface TokenAuthenticatedController

上面的尾部没有更新,脚本一直到回声&#34;检查新的致命因素&#34;然后它不会拖尾日志

2 个答案:

答案 0 :(得分:0)

也许this有帮助。

tail -f /data1/log/startstop/MonitorDaemon.log | grep --line-buffered "FATAL ECSD" | grep -v "Line is"

详细说明:您可以在一个命令中多次使用管道符号(|)!

Source

答案 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