我必须在文件中找到特定文本,然后用一些新文本替换该文本。
该文件的内容是:
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替换。
请帮我弄清楚解决方案。
感谢。
答案 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