为什么sed不能在文件中替换字符串?

时间:2014-09-10 01:02:41

标签: bash sed

我有一个文件,我试图用以下命令替换另一个字符串

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

sed运行时,它打印到std.out罚款,但当我cat文件时内容没有改变

2 个答案:

答案 0 :(得分:2)

您需要使用-i sed选项才能更改文件。

答案 1 :(得分: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.

中确认所需的更改为止