как исключить некоторые совпадения из grep? - PullRequest
0 голосов
/ 01 февраля 2019

Я использую grep для распечатки совпадающих строк из очень большого файла, из которого я получил сотни совпадений, некоторые из них не интересны, я хочу исключить те совпадения, которые не интересны

grep "WARNING" | grep -v "WARNING_HANDLING_THREAD" path# Я попробовал это

Когда я извлекаю файл для предупреждения, я получаю

0-00: 00: 33.392 (2127: 127: 250: 02 =21.278532 Пт, 1 февраля 10:17:22 2019) <3: 0x000a>: [89]: [enter]: cest_handleFreeReq.c: 116: [WARNING]: cest_handleFreeReq: отправлено из DECA -> UCS

0-00: 00: 38.263 (2189: 022: 166: 06 = 21.891510 пт 1 февраля 10:17:28 2019) <3: 0x000a>: [89]: [вводить]: cest_handleConfigReq.c: 176: [ПРЕДУПРЕЖДЕНИЕ]:cest_handleConfigReq.c: GroupConfig НЕ присутствует.

0-00: 00: 38.263 (2189: 022: 167: 03 = 21.891510 пт 1 февраля 10:17:28 2019) <3: 0x000a>: [89]: [enter]: cest_handleConfigReq.c: 194: [WARNING]: cest_handleConfigReq: PhysicalConfig НЕ присутствует.

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 / AN / AN / AN / AN / AN / A | ETH_DRV_WARNING_HANDLING_thread

ПРЕДУПРЕЖДЕНИЕ: список потоков, нарушающих ограничение кучи и стека

Я хочу исключить последниенеинтересные строки

0-00: 00: 33.392 (2127: 127: 250: 02 = 21.278532 пт 1 февраля 10:17:22 2019) <3: 0x000a>:[89]: [введите]: cest_handleFreeReq.c: 116: [ПРЕДУПРЕЖДЕНИЕ]: cest_handleFreeReq: отправлено из DECA -> UCS

0-00: 00: 38,263 (2189: 022: 166: 06 = 21,891510 пт1 февраля 10:17:28 2019) <3: 0x000a>: [89]: [введите]: cest_handleConfigReq.c: 176: [ПРЕДУПРЕЖДЕНИЕ]: cest_handleConfigReq.c: GroupConfig НЕ присутствует.

0-00: 00: 38.263 (2189: 022: 167: 03 = 21.891510 пт 1 февраля 10:17:28 2019) <3: 0x000a>: [89]: [enter]: cest_handleConfigReq.c: 194: [WARNING]: cest_handleConfigReq:PhysicalConfig НЕ присутствует.

Есть ли способ сделать это с помощью grep find или любого другого инструмента?

Спасибо

1 Ответ

0 голосов
/ 01 февраля 2019

Обратите внимание, что подстрока thread находится в нижнем регистре в данных, но в верхнем регистре в вашем выражении.

Вместо этого используйте

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

-F make grep использовать сравнение строк вместо сопоставления с регулярным выражением (это не на самом деле связано с вашей текущей проблемой, а просто способ показать, что мы знаем, с каким типом шаблона мы сопоставляемся).

Другим вариантом было бы сделать второе grep do без учета регистра совпадения с -i:

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

В этом случае, однако, я бы, вероятно, вместо этого сопоставил тег [WARNING]:

grep -F '[WARNING]:' logfile

Обратите внимание, что здесь нам необходимо -F, чтобы grep интерпретировал шаблон как строку, а не как регулярное выражение, соответствующее любому отдельному символу из W,A, R, N, I, G, а затем :.

...