У меня есть файл с таким содержимым: dskldfsd.com

domain

domain.com

sub.domain.com

domain.main.com

anythinghere

Я хочу удалить строку, содержащую слово domain. Используя grep, эта команда находит именно ту строку, которую я хочу:

grep -w '^domain$' test.txt

Но я хочу удалить эту строку, содержащую domain как одно слово от начала до конца строки. Я хочу сохранить строки, в которых слово domain является лишь частью строки.

0
user9371654 11 Авг 2018 в 17:40

4 ответа

Лучший ответ

Используйте sed:

sed -i -e '/^domain$/d' test.txt
1
RalfFriedl 11 Авг 2018 в 17:43

Как насчет

grep -v '^domain$' test.txt
0
RudiC 11 Авг 2018 в 18:40

Почему grep -v '^domain$'. Насколько я понимаю, это просто grep -v 'домен'.

0
kalpesh 11 Авг 2018 в 20:22
«Я хочу сохранить строки, в которых слово domain является лишь частью строки».
 – 
RudiC
11 Авг 2018 в 22:56

Предполагая, что вы захотите использовать стандартные инструменты, вы можете сделать

grep -xF -v 'domain' test.txt >newtest.txt

Флаг -x для grep заставляет совпадение выполняться по всей строке, а -F заставляет grep рассматривать шаблон как фиксированную строку, а не как регулярное выражение. -v инвертирует смысл совпадения, так что в конце концов вы получите все строки в test.txt, а не только строку domain. Результат записывается в newtest.txt.

0
Kusalananda 12 Авг 2018 в 10:49