我有一行配置文件:
foo.bar = http://localhost/foo
我想用新网址替换此行。例如:
foo.bar = http://new_url/bar
但我不知道原始网址,我只知道参数的名称。
我试过了:
sed "s!^foo.bar.*!foo.bar = http://new_url/bar!" test.ini
但它返回错误
答案 0 :(得分:2)
使用单个引号来阻止shell扩展:
sed -e 's!^foo.bar.*!foo.bar = http://new_url/bar!'
答案 1 :(得分:0)
在bash
双引号中,!
放在里面时效果不佳(请参阅HISTORY EXPANSION
中的man bash
),将分隔符更改为@
(或)使用单引号
sed 's@foo.bar.*@foo.bar = http://new_url/bar@' file
foo.bar = http://new_url/bar