2014-09-10 2 views
0

У меня есть файл, в котором я пытаюсь заменить одну строку на другую с помощью следующей командыПочему sed не заменяет строку в файле?

sed -e "s|value=\"localhost\"|value=\"$defaultHost\"|g" "$serv_dir"/controller1/server.xml 

Когда sed работает он печатает STD.OUT нормально, но когда я cat файл содержимое не изменено

+1

Вы ищете 'sed -i'? – Wrikken

ответ

3

Вам необходимо использовать -i вариант sed, чтобы он мог изменять файлы на своем месте.

+0

yep, я идиот. Новое для bash scripting/sed dunno, как я пропустил это. Благодаря! – sreya

1

Ваша альтернатива редактированию на месте с помощью -i заключается в использовании промежуточного временного файла. Это удобный метод, который позволяет проверить для успешного завершения sed -i (аналогично для резервного копирования создания с sed -i[ext], который создает filename.ext в качестве резервного) Чтобы использовать временный файл:

sed -e expression filename > tmpfile && cp tmpfile filename && rm tmpfile 

Конечно, вы можете пропустить финальный && cp tmpfile filename && rm tmpfile и сохраните оригинал filename, пока не подтвердите необходимые изменения в tmpfile.

Смежные вопросы