Bash 用文本(sed)替换变量

Bash 用文本(sed)替换变量,bash,sed,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

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

文件的内容为:

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

请帮我找出解决办法


谢谢。

grep的输出以换行符结束
sed
要求整个命令在一行或转义换行符上

sed -i.bak "s/servers=[0-9]*/servers=5/" /path/to/file
但是,仅使用
sed
即可轻松完成任务:

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

grep
的输出以换行符结束
sed
要求整个命令在一行或转义换行符上

但是,仅使用
sed
即可轻松完成任务:

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

为什么需要
var
?为什么不直接在
sed
中编写它呢?试着在
var=
行之后添加
echo$var
,看看你得到了什么,为什么你想要
var
?为什么不直接在
sed
中编写它呢?试着在
var=
行之后添加
echo$var
,看看你得到了什么