2017-04-06 86 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頁的摘錄,

[..]錨不匹配任何字符。他們匹配一個位置。在字符串的開頭^比賽,並且在字符串的末尾$匹配。[..]