Вы можете правильно использовать флаг -i
, предоставив ему суффикс для добавления в файл резервной копии.Расширение вашего примера:
sed -i.bu 's/oldword/newword/' file1.txt
Даст вам два файла: один с именем file1.txt
, который содержит подстановку, и другой с именем file1.txt.bu
, который имеет исходный контент.
Легко опасно
Если вы хотите деструктивно перезаписать исходный файл, используйте что-то вроде:
sed -i '' 's/oldword/newword/' file1.txt
^ note the space
Из-за способа, которым строка получаетпроанализирован, между флагом опции и его аргументом требуется пробел, потому что аргумент имеет нулевую длину.
За исключением возможного уничтожения вашего оригинала, я не знаю о каких-либо дополнительных опасностяхобмануть Седа таким образом.Однако следует отметить, что если этот вызов sed
является частью сценария, то Unix Way ™ (IMHO) будет использовать sed
неразрушающим образом, проверять, что он завершился чисто, и только затем удалитьпосторонний файл.