只有行的开头就是整行

时间:2017-04-04 09:09:32

标签: bash sed

我有一行配置文件:

foo.bar = http://localhost/foo

我想用新网址替换此行。例如:

foo.bar = http://new_url/bar

但我不知道原始网址,我只知道参数的名称。

我试过了:

sed "s!^foo.bar.*!foo.bar = http://new_url/bar!" test.ini

但它返回错误

2 个答案:

答案 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