Как удалить строки из текстового файла, содержащие определенные слова, через терминал?

grep подход

Чтобы создать копию файла без строк, соответствующих "cat" или "rat", можно использовать grep в обратном порядке (-v) и с опцией полного слова (-w).

grep -vwE "(cat|rat)" sourcefile > destinationfile

Опция "целое слово" гарантирует, что оно не будет совпадать cats или grateful например. Используется перенаправление вывода вашей оболочки (>), чтобы записать его в новый файл. Нам нужны -E опция для включения расширенных регулярных выражений для (one|other) синтаксис.

sed подход

В качестве альтернативы, чтобы удалить линии на месте, можно использовать sed -i:

sed -i "/\b\(cat\|rat\)\b/d" filename

То \b устанавливает границы слов и d операция удаляет строку, соответствующую выражению между косыми чертами. cat и rat оба сопоставляются с помощью (one|other) синтаксис, который нам, по-видимому, нужно экранировать с помощью обратной косой черты.

Совет: используйте sed без того, чтобы -i оператор для проверки выходных данных команды перед перезаписью файла.

(На основе Sed - Удаление строки, содержащей определенную строку)