Найдите строку в файле и удалите ее из этого файла с помощью оболочки Script

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

Ответы

Ответ 1

Это должно сделать это:

sed -e s/deletethis//g -i *
sed -e "s/deletethis//g" -i.backup *
sed -e "s/deletethis//g" -i .backup *

он заменит все вхождения "deleteethis" на "" (ничего) во всех файлах (*), отредактировав их на месте.

Во второй форме шаблон можно отредактировать немного более безопасным, и он создает резервные копии любых модифицированных файлов, путем их суффикса с помощью .backup.

Третья форма - это то, как это делают некоторые версии sed. (например, Mac OS X)

man sed для получения дополнительной информации.

Ответ 2

sed -i '/pattern/d' file

Используйте 'd' для удаления строки. Это работает, по крайней мере, с GNU-Sed.

Если у вашего Sed нет опции, чтобы изменить файл на месте, возможно, вы можете использовать промежуточный файл, чтобы сохранить модификацию:

sed '/pattern/d' file > tmpfile && mv tmpfile file

Написание непосредственно к источнику обычно не работает: sed '/pattern/d' file > file сделайте копию перед тем, как попробовать, если вы сомневаетесь в ней.

Ответ 3

Попробуйте vim-way:

ex -s +"g/foo/d" -cwq file.txt