Удаление строк, содержащих переменную

У меня есть текстовый файл, содержащий имена. Я хочу, чтобы моя программа могла удалять имена, о которых я рассказываю.

Во-первых, я обнаружил, что могу сделать это с помощью sed, но это просто не работает для меня. [ ! d1]

deletename - моя переменная, которая будет содержать шаблон, который я хочу использовать для поиска, а test.txt - это мой текстовый файл.

Я использую:

deletename=0; read deletename; sed...

Я попытался:

sed "/$deletename/ d" test.txt
sed "/$deletename/d" test.txt
sed '/$deletename/ d' test.txt
sed '/$deletename/d' test.txt    
sed -e "/$deletename/ d" test.txt    
sed -e "/$deletename/d" test.txt
sed -e '/$deletename/ d' test.txt
sed -e '/$deletename/d' test.txt
sed -r "/$deletename/ d" test.txt
sed -r "/$deletename/d" test.txt
sed -r '/$deletename/ d' test.txt
sed -r '/$deletename/d' test.txt

Так как ничего из этого не сработало, у меня возникла идея проверить номер строки с шаблоном и удалить эту строку. Я знаю, что должен использовать grep, но я не знаю, как его использовать.

Я пробовал что-то вроде этого, но это не сработало:

lineno=`expr grep -n $deletename test.txt`

Кто-нибудь сможет помочь? С sed или grep для меня не имеет значения.

1
задан 22 November 2016 в 14:52

1 ответ

Фильтрация линий является основной ролью grep. Используйте переключатель -v для инвертирования совпадения, т. Е. Отображают только строки, которые не содержат текст. Поэтому вы можете использовать следующую команду:

read deletename; grep -v $deletename test.txt
3
ответ дан 23 May 2018 в 03:59
  • 1
    Спасибо, но это не то, что мне нужно, и, к счастью, я уже понял это. :) – znst 4 December 2016 в 21:48
  • 2
    Он делает то же самое, что и принятый ответ. – Jim 8 December 2016 в 19:30

Другие вопросы по тегам:

Похожие вопросы: