如何从 grep 中排除一些匹配项?
how to exclude some of the matches from grep?
我正在使用 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: [WARNING]: cest_handleFreeReq: sent from 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: [WARNING]: cest_handleConfigReq.c: GroupConfig NOT present.
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: [WARNING]: cest_handleConfigReq: physicalConfig NOT present.
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 N/A |ETH_DRV_WARNING_HANDLING_thread
WARNING: List of threads violating the heap & stack limit
我想排除不感兴趣的最后几行
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: [WARNING]: cest_handleFreeReq: sent from 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: [WARNING]: cest_handleConfigReq.c: GroupConfig NOT present.
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: [WARNING]: cest_handleConfigReq: physicalConfig NOT present.
有没有办法使用 grep find 或任何其他工具来做到这一点?
谢谢
请注意,子字符串 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
将模式解释为字符串而不是匹配任何单个字符的正则表达式在 W
、A
、R
、N
、I
、G
集合中,后跟 :
.
我正在使用 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: [WARNING]: cest_handleFreeReq: sent from 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: [WARNING]: cest_handleConfigReq.c: GroupConfig NOT present.
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: [WARNING]: cest_handleConfigReq: physicalConfig NOT present.
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 N/A |ETH_DRV_WARNING_HANDLING_thread
WARNING: List of threads violating the heap & stack limit
我想排除不感兴趣的最后几行
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: [WARNING]: cest_handleFreeReq: sent from 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: [WARNING]: cest_handleConfigReq.c: GroupConfig NOT present.
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: [WARNING]: cest_handleConfigReq: physicalConfig NOT present.
有没有办法使用 grep find 或任何其他工具来做到这一点?
谢谢
请注意,子字符串 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
将模式解释为字符串而不是匹配任何单个字符的正则表达式在 W
、A
、R
、N
、I
、G
集合中,后跟 :
.