Мне нужно напечатать строки в файле, соответствующем шаблону или другому шаблону, используя awk или sed. Я чувствую, что это простая задача, но я не могу найти ответа. Любые идеи?
Использование sed/awk для печати строк с соответствующим шаблоном ИЛИ другого совпадающего шаблона
Ответ 1
Путь POSIX
awk '/pattern1/ || /pattern2/{print}'
Изменить
Чтобы быть справедливым, мне нравится lhf лучше с помощью /pattern1|pattern2/
, так как он требует меньше ввода для одного и того же результата. Тем не менее, я должен указать, что этот шаблон нельзя использовать для логических операций AND, для чего вам нужно использовать мой шаблон /pattern1/ && /pattern2/
Ответ 2
Использование:
sed -nr '/patt1|patt2/p'
где patt1
и patt2
- это шаблоны. Если вы хотите, чтобы они соответствовали всей строке, используйте:
sed -nr '/^(patt1|patt2)$/p'
Вы можете удалить -r
и добавить escape файлы:
sed -n '/^\(patt1\|patt2\)$/p'
для соответствия POSIX.
Ответ 3
почему вы не хотите использовать grep?
grep -e 'pattern1' -e 'pattern2'
Ответ 4
awk '/PATT1|PATT2/ { print }'