我遇到的问题是“sed”

时间:2014-08-06 21:27:04

标签: bash sed

我试图更换此配置中的端口,但我遇到问题基本上忽略了我。我在这做错了什么?

显示我想要替换的行。

b@a:/home/mse1# cat server.properties |grep port
server-port=33333

然后向您展示我在其他几个脚本中使用的sed来执行完全相同的操作,因此无法完成任务。

b@a:/home/mse1# sed 's/server-port=.*`\n`/server-port=33334/g' /home/mse1/server.properties |grep server-port
server-port=33333

2 个答案:

答案 0 :(得分:1)

因为您(正确地)使用了单引号,所以sed只能将后引号视为模式的一部分。此外,\n并不意味着在该上下文中使用换行符 - 您使用$来查找该行的结尾。因此:

sed 's/^server-port=.*$/server-port=33334/' …

当一行只有一个匹配时,您不需要g修饰符,因为您在开始时有^而在结尾有$

答案 1 :(得分:0)

尝试以下代码

sed -i.bak s/server-port=33333/server-port=33334/g /home/mse1/server.properties