Есть ли способ отфильтровать вывод команды по условию ИЛИ в Linux?
Существует фильтрация по условию AND с помощью grep следующим образом:

ls -l | grep "^a" | grep "z$"

Это говорит: перечислите все файлы, которые начинаются с "a" и заканчиваются на "z" (поэтому есть более короткий способ написать это: grep "^ a\. * Z $", но это не важно).
Есть ли способ выполнить тест по условию ИЛИ?
Например: файлы, которые начинаются именно с "xen" ИЛИ файлы, которые заканчиваются именно с «.rpm». Но именно так, а не что-то вроде

grep "[xen]{0,3}\.*[.rpm]{0,4}"

Спасибо, что впереди.

2 ответа2

5

Вы можете использовать egrep (который является псевдонимом для grep -E), чтобы использовать расширенные регулярные выражения в шаблоне поиска следующим образом:

egrep '^ xen |\.rpm $'

Обратите внимание, что [xen]{0,3} означает: ищите строку длиной от 0 до 3, состоящую из любой комбинации символов x, e и n.

4

GNU grep принимает \| в качестве оператора ИЛИ в регулярных выражениях, чтобы вы могли использовать

grep '^xen\|\.rpm$'

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .