Добавление дополнительного условия (условий) в sed

пытаюсь разобраться с sed, есть определенная задача по поиску совпадений в файле для примера: sed -n '/t/!p' file_for_sed.txt - Вывожу все строки не содержащие буквы t Как я могу в этот же код добавить еще условие, скажем так же запретить выводить строки с буквой z Пробовал делать через скобки (/t/!p)|(/z/!p), но ничего не вышло, попытался поискать, но не нашел


Ответы (1 шт):

Автор решения: Wiktor Stribiżew

Используйте скобочное выражение ("bracket expression"):

sed -n '/[tz]/!p' file_for_sed.txt

Здесь скобочное выражение [tz] находит t или z.

Если t или z — это многосимвольные строки, используйте оператор ИЛИ, доступный в POSIX ERE:

sed -nE '/t...|z.../!p' file_for_sed.txt

GNU sed:

sed -n '/t...\|z.../!p' file_for_sed.txt

Если ваше выражение часть более длинного выражения:

sed -nE '/...(t...|z...).../!p' file_for_sed.txt
sed -n '/...\(t...\|z..\).../!p' file_for_sed.txt
→ Ссылка