sed replace没有得出我想要的结果

时间:2013-09-29 06:09:47

标签: replace sed

sudo sed -i 's!# dbdir /var/lib/munin!dbdir /var/lib/munin!g' /etc/munin/munin.conf    
sudo sed -i 's!localhost 127.0.0.0/8  ::1!all!g' /etc/munin/apache.conf

为什么# dbdir /var/lib/munin无法替换为dbdir /var/lib/munin

为什么localhost 127.0.0.0/8 ::1不会被all替换?

sudo sed -i 's!# dbdir!dbdir!g' /etc/munin/munin.conf

给出了令人满意的结果,只剩下localhost替换问题。

1 个答案:

答案 0 :(得分:0)

在我的munin.conf中,dbdir/var/lib/munin之间有多个空格,所以除非你有确切的信息,否则这个替换不起作用。 您只搜索部分文本,然后替换该行:

awk '/dbdir/ {$0="dbdir /var/lib/munin"}1' /etc/munin/munin.conf > temp ; mv temp /etc/munin/munin.conf

或删除行前面的#

awk '/dbdir/ {sub(/^#/,x)}1' /etc/munin/munin.conf

编辑:

awk '/Allow from local/ {sub(/localhost 127.0.0.0\/8 ::1/,"all")}1' /etc/munin/apache.conf