У меня есть текстовый файл, содержащий имена. Я хочу, чтобы моя программа могла удалять имена, о которых я рассказываю.
Во-первых, я обнаружил, что могу сделать это с помощью 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 для меня не имеет значения.
Фильтрация линий является основной ролью grep. Используйте переключатель -v для инвертирования совпадения, т. Е. Отображают только строки, которые не содержат текст. Поэтому вы можете использовать следующую команду:
read deletename; grep -v $deletename test.txt