Найдите строку в файле и удалите ее из этого файла с помощью оболочки 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