Как убрать из файла строки, совпадающие с шаблоном?

Подскажите, пожалуйста. Есть файл, в нем много строк-путей. Надо убрать совпадающие с шаблоном. Как это сделать скриптом?
grep -v ?
Лозунг у них был такой: "Познание бесконечности требует бесконечного времени". С этим я не спорил, но они делали из этого неожиданный вывод: "А потому работай не работай — все едино". И в интересах неувеличения энтропии Вселенной они не работали. (с)
Это выводит в таком формате: non-db.txt:/usr/lib/initcpio/hooks/archiso_pxe_common. А мне надо в самом файле изменить, без вывода.
sed -i -n '/шаблон/p' файл
Только сначала попробуйте БЕЗ -i , иначе в случае ошибки в команде или шаблоне файл будет безнадёжно испорчен.
Файл не жалко, сейчас попробую)
Шаблон такой- /boot/*. Набираю sed -n ‘//boot/*/p’ non-db.txt. Так же пробовал шаблон закрыть апострофами или же кавычками. В любом случае, выхлоп такой: sed: невозможно найти метку для перехода к `oot/*/p'. Так же попробовал изменить шаблон на “boot”, потому что, кажется, он конфликтует с синтаксисом sed. Теперь команда такая: sed -n ‘/boot/p’ non-db.txt и у меня в выводе получаются только те строки, которые соответствуют шаблону. А их наоборот надо убрать из файла.
sed '/\/boot\/*/d' non-db.txt
Набираю sed -n ‘//boot/*/p’ non-db.txt.
Вот чтобы так не делать сильно рекомендую почитать про регулярные выражения. Хоть в Википедии, хоть где.
patashnik
sed '/\/boot\/*/d' non-db.txt
Спасибо, работает, как надо. Я, чтобы убрать строки по нескольким шаблонам сделал такую команду: “sed ‘/\/boot\/*/d’ ‘/\/etc\/ssl\/*/d’ ‘/\/etc\/ssl\/*/d’ ‘/\*font*/d’ ‘/\*archiso*/d’ ‘/\/usr\/share\/mime\/*/d’”(надо удалить все строки, содержащие font, archiso, /usr/share/mime/* и /etc/ssl/*) Но почему-то удаляются только содержащие /boot/*. Чяднт?
Vekt
patashnik
sed '/\/boot\/*/d' non-db.txt
Спасибо, работает, как надо. Я, чтобы убрать строки по нескольким шаблонам сделал такую команду: “sed ‘/\/boot\/*/d’ ‘/\/etc\/ssl\/*/d’ ‘/\/etc\/ssl\/*/d’ ‘/\*font*/d’ ‘/\*archiso*/d’ ‘/\/usr\/share\/mime\/*/d’”(надо удалить все строки, содержащие font, archiso, /usr/share/mime/* и /etc/ssl/*) Но почему-то удаляются только содержащие /boot/*. Чяднт?
Вертикальную черту используйте для перечисления строк, которые нужно удалить.
А вообще да, почитайте про регулярные выражения.
 
Зарегистрироваться или войдите чтобы оставить сообщение.