regex - строка соответствия, не содержащая другую строку - PullRequest
0 голосов
/ 18 октября 2019

Мне нужно выполнить grep моих журналов для конкретной строки, но я хочу исключить строки, содержащие слово "centrifugo".

Например, если я grep для xxx, я получаю это:

123 centrifugo 551 xxx
451 abcd xxx 334
yyyy xxx 231

Ожидаемый результат:

451 abcd xxx 334
yyyy xxx 231

Что это за регулярное выражение?

1 Ответ

2 голосов
/ 18 октября 2019

Более простой ответ, чем наличие одного регулярного выражения, которое соответствует всем строкам, содержащим xxx, но не centrifugo, было бы сначала grep для xxx, а затем перенаправить вывод в другие grep строки фильтрации, содержащие centrifugo. Это можно записать примерно так:

grep xxx | grep -v centrifugo

Для grep -v также посмотрите Отрицательное сопоставление с использованием grep (строки соответствия, не содержащие foo)

Теперь, если вы действительно хотите использовать Regex, взгляните на Регулярное выражение для строки, содержащей одно слово, но не другое . Применяя это, вы можете использовать регулярные выражения, такие как это:

^(?!.*centrifugo).*xxx

Вы можете попробовать это здесь .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...