Вы хотите напечатать только те строки, которые соответствуют 'text' или 'blah' (или обоим), где различие между 'и' и 'or' довольно важно.
sed -n -e '/text/{p;n;}' -e '/blah/{p;n;}' your_data_file
-n
означает, что не печатать по умолчанию. Первый шаблон ищет «текст», печатает его, если соответствует, и переходит к следующей строке; второй шаблон делает то же самое для «бла». Если бы «n» там не было, то строка, содержащая «text and blah», была бы напечатана дважды. Хотя я мог бы использовать только -e '/blah/p'
, симметрия лучше, особенно если вам нужно расширить список совпадающих слов.
Если ваша версия sed
поддерживает расширенные регулярные выражения (например, GNU sed
поддерживает -r
), то вы можете упростить это до:
sed -r -n -e '/text|blah/p' your_data_file