grep: построение шаблона регулярных выражений для исключения нескольких групп - PullRequest
0 голосов
/ 20 ноября 2018

У меня есть папка с тремя файлами:

$ ls

aaa.txt abc.txt def.txt

Если я хочу grep вывод, кроме файла abc.txt, я могу сделать:

$ ls | grep -v 'abc'

aaa.txt
def.txt

Если я хочуисключить два файла, которые я могу сделать:

$ ls | grep -v 'abc' | grep -v 'def'

aaa.txt

Но как я могу сделать это, используя одно регулярное выражение и один grep вызов?

Это не работает:

$ ls | grep -v '[(abc)(def)]'

также не делает этого:

$ ls | grep -v "abc|def"

1 Ответ

0 голосов
/ 20 ноября 2018

Используйте шаблон ERE (расширенное регулярное выражение) для совпадения чередования |, которое не включено по умолчанию в BRE (которое grep использует по умолчанию)

grep -vE "abc|def"

или используйте расширенное grep, то есть egrep, который по умолчанию включает ERE

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