我正在使用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查找或其他任何工具来做到这一点?
谢谢
答案 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 }},W
,A
,R
,N
,I
集,后跟G
。