用文本替换变量(sed)

时间:2015-07-02 05:57:41

标签: bash sed

我必须在文件中找到特定文本,然后用一些新文本替换该文本。

该文件的内容是:

host=100
servers=4
clients=70

我试过这个:

var=$(grep "servers=" /path/to/file)
sed -i "s/${var}/servers=5/g" /path/to/file

但它给了我错误:

sed: -e expression #1, char 2: unterminated `s' command

注意:我想要的只是更新每个变量的值,即servers = 4应该被servers = 5替换。

请帮我弄清楚解决方案。

感谢。

2 个答案:

答案 0 :(得分:3)

sed -i.bak "s/servers=[0-9]*/servers=5/" /path/to/file

答案 1 :(得分:3)

grep的输出以换行符结尾。 sed期望整行命令在一行或转义换行符。

但是,您只需sed即可轻松完成整个任务:

sed -i 's/^servers=[0-9]*$/servers=5/' /path/to/file