Логическое AND и OR с grep

Я хочу извлечь строки, которые соответствуют следующей логической операции:

"AB+CD" AND ("nonAB+nonCD" OR "nonAB+CD"). 

что означает, что я хочу строки с:

AB+CD,nonAB+nonCD
AB+CD,nonAB+CD
AB+CD,nonAB+nonCD,nonAB+CD

это означает, что я ищу строки с "AB + CD" с one или и о ("nonAB+nonCD" или "nonAB+диск").


Обратите внимание, что знак + является частью строки. Я хочу рассматривать его как строку (символ), а не арифметическую операцию.

то, что я сделал, используя трубу для выполнения И. И польза / для операционной. Поэтому моя команда:

grep ',AB+CD' test.txt | grep ',nonAB+nonCD|,nonAB+CD'

первый | для трубопроводов. Второй логичен или для grep согласно этому ссылка что дает этот пример для логического ИЛИ с grep:

grep 'pattern1|pattern2' filename

результат, который появляется у меня в терминальных цветах (находит) вторую часть команды. Первая часть (перед трубой | не выделяется в цветном результате. Мой вопрос:

1) верна ли моя команда?

2) Как раскрасить полные выводы командования?

10
задан AFH
25.02.2023 3:19 Количество просмотров материала 3316
Распечатать страницу

1 ответ

используя -P опция (PCRE):

grep -P 'AB\+CD,(?:nonAB\+nonCD|nonAB\+CD)' file.txt

выход:

AB+CD,nonAB+nonCD
AB+CD,nonAB+CD
AB+CD,nonAB+nonCD,nonAB+CD
0
отвечен Toto 2023-02-26 11:07

Постоянная ссылка на данную страницу: [ Скопировать ссылку | Сгенерировать QR-код ]

Ваш ответ

Опубликуйте как Гость или авторизуйтесь

Имя
Вверх