我已经浏览了许多线程并尝试了不同的设置来使用 Sed 和 AWK 执行搜索和替换,但是,我并没有那么成功。
我需要用relayhost = [smtp.mydomain.com]
替换#relayhost = [mailserver.isp.tld]
.
我在下面使用了两个命令,但两个命令都没有提供所需的结果。
sed -i 's/#relayhost = [mailserver.isp.tld]/relayhost = [smtp.mydomain.com]/g' /etc/postfix/main.cf.
也尝试过
sed -e '0,/#relayhost = [mailserver.isp.tld]/{//i[smtp.mydomain.com]' -e '}' /etc/postfix/main.cf
我需要取消注释该行并将内容侧更改为方括号。有什么建议为什么它不起作用吗?
您需要
转义模式中的[]
,以及在正则表达式中具有特殊含义的其他字符,在本例中为.
:
sed -i 's/#relayhost = [mailserver.isp.tld]/relayhost = [smtp.mydomain.com]/' /etc/postfix/main.cf.
作为旁注,我删除了/g
标志,您不需要它。
另请参阅此相关答案,以处理模式中的转义元字符。