在 zabbix-agent.conf 我有幾行:
# Example: Server=127.0.0.1,192.168.1.0/24,::1,2001:db8::/32,zabbix.example.com
Server=127.0.0.1
我想換線
Server=127.0.0.1
和我的
Server=zabbix.mydomain.com
但如果我這樣做
sed -i -e 's/Server=127.0.0.1/Server=zabbix.mydomain.com/g' /etc/zabbix/zabbix_agentd.conf
它也找到了帶有注釋示例的行并替換其中的字串。我得到:
#<----->Example: Server=zabbix.mydomain.com,192.168.1.0/24,::1,2001:db8::/32,zabbix.example.com
Server=zabbix.mydomain.com
如何只更換一根線?
uj5u.com熱心網友回復:
你需要
- 匹配字串開頭的文本
- 逃離點
- 洗掉
g標志,因為匹配只會在字串開頭找到。
此外,您不需要該-e選項,您可以使用
sed -i 's/^Server=127\.0\.0\.1/Server=zabbix.mydomain.com/' /etc/zabbix/zabbix_agentd.conf
請參閱在線演示:
#!/bin/bash
s='# Example: Server=127.0.0.1,192.168.1.0/24,::1,2001:db8::/32,zabbix.example.com
Server=127.0.0.1'
sed 's/^Server=127\.0\.0\.1/Server=zabbix.mydomain.com/g' <<< "$s"
輸出:
Example: Server=127.0.0.1,192.168.1.0/24,::1,2001:db8::/32,zabbix.example.com
Server=zabbix.mydomain.com
uj5u.com熱心網友回復:
這可能對你有用(GNU sed):
sed -i '/^Server=127\.0\.0\.1/cServer=zabbix.mydomain.com' file
將行開始更改Server=127.0.0.1為Server=zabbix.mydomain.com。
uj5u.com熱心網友回復:
其他答案幾乎沒問題,但它們也會替換如下一行:
Server=127.0.0.10
任何 sed 的完整解決方案可能是:
sed -i 's/^Server=127\.0\.0\.1$/Server=zabbix.mydomain.com/' /etc/zabbix/zabbix_agentd.conf
^并將$字串分別錨定到行首和行尾。點需要反斜杠轉義,否則它們代表任何字符。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/362998.html
上一篇:在陣列名稱中使用迭代器
