如何从grep中排除某些匹配项?

时间:2019-02-01 09:47:18

标签: grep find ack

我正在使用grep从很大的文件中打印出匹配的行 从中我获得了数百个匹配项,其中一些并不有趣,我想排除那些不有趣的匹配项

grep "WARNING" | grep -v "WARNING_HANDLING_THREAD" path#我尝试了

当我grep发出警告文件时,我得到了

  

0-00:00:33.392(2127:127:250:02 = 21.278532 Fri Feb 1 10:17:22 2019)<3:0x000a>:[89]:[enter]:cest_handleFreeReq.c:116: [警告]:cest_handleFreeReq:从DECA-> UCS

发送      

0-00:00:38.263(2189:022:166:06 = 21.891510 Fri Feb 1 10:17:28 2019)<3:0x000a>:[89]:[enter]:cest_handleConfigReq.c:176: [警告]:cest_handleConfigReq.c:不存在GroupConfig。

     

0-00:00:38.263(2189:022:167:03 = 21.891510 Fri Feb 1 10:17:28 2019)<3:0x000a>:[89]:[enter]:cest_handleConfigReq.c:194: [警告]:cest_handleConfigReq:物理配置不存在。

     

60 0x6d77 0 0x504ea | 2 18 | 0 0 | 4 12 | 647 | 14685 0 0.0 0 500 500 | 0 | 0 | 38 | ETH_DRV_WARNING_HANDLING_thread   60 0 | 0 0 | 0 0 0 | 0 0 0 0 0 0! N / A N / A N / A N / A N / A | ETH_DRV_WARNING_HANDLING_thread

     

警告:违反堆和堆栈限制的线程列表

我想排除不有趣的最后几行

  

0-00:00:33.392(2127:127:250:02 = 21.278532 Fri Feb 1 10:17:22 2019)<3:0x000a>:[89]:[enter]:cest_handleFreeReq.c:116: [警告]:cest_handleFreeReq:从DECA-> UCS

发送      

0-00:00:38.263(2189:022:166:06 = 21.891510 Fri Feb 1 10:17:28 2019)<3:0x000a>:[89]:[enter]:cest_handleConfigReq.c:176: [警告]:cest_handleConfigReq.c:不存在GroupConfig。

     

0-00:00:38.263(2189:022:167:03 = 21.891510 Fri Feb 1 10:17:28 2019)<3:0x000a>:[89]:[enter]:cest_handleConfigReq.c:194: [警告]:cest_handleConfigReq:物理配置不存在。

是否可以使用grep查找或其他任何工具来做到这一点?

谢谢

1 个答案:

答案 0 :(得分:0)

请注意,子字符串thread在数据中小写,而在表达式中大写。

相反,使用

grep -F 'WARNING' logfile | grep -F -v 'WARNING_HANDLING_thread'

-F使grep使用字符串比较而不是正则表达式匹配(这与您当前的问题没有真正的联系,只是一种表明我们知道的方式我们要匹配的是哪种模式)。

另一种选择是使第二个grep-i进行不区分大小写的匹配:

grep -F 'WARNING' logfile | grep -Fi -v 'WARNING_HANDLING_THREAD'

在这种情况下,我可能会匹配[WARNING]标签:

grep -F '[WARNING]:' logfile

请注意,这里我们需要-F ,这样grep会将模式解释为字符串,而不是将正则表达式解释为与{{1 }},WARNI集,后跟G