2017-04-06 56 views
-1

我有几个配置文件,并希望使用脚本编辑某些变量值。我遇到过sed/awk来做这个。我曾尝试在以下配置示例中使用以下sed命令,我的问题是它改变了注释部分以及实际的部分。我确实看到你可以进行第N次发生,但接缝只适用于该行,而不是整个文件。使用sed/awk更改配置文件中的变量值

命令:

sudo sed -i 's/Server=.*/Server=10.10.1.206/' /etc/zabbix/zabbix_agentd.conf 

文件

### Option: Server 
#  List of comma delimited IP addresses (or hostnames) of Zabbix servers. 
#  Incoming connections will be accepted only from the hosts listed here. 
#  If IPv6 support is enabled then '127.0.0.1', '::127.0.0.1', '::ffff:127.0.0.1' are treated equally. 
# 
# Mandatory: no 
# Default: 
# Server=10.10.1.206 

Server=10.10.1.206 

回答

2

添加一个正则表达式锚^更换上线仅开始Server

sudo sed -i 's/^Server=.*/Server=10.10.1.206/' /etc/zabbix/zabbix_agentd.conf 

为锚支持和$匹配开始结束的模式可用于所有POSIX兼容sed版本。

从这个regular-expressions页的摘录,

[..]锚不匹配任何字符。他们匹配一个位置。在字符串的开头^比赛,并且在字符串的末尾$匹配。[..]