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
,看看你得到了什么