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

sed replace没有得到我想要的结果,replace,sed,Replace,Sed,为什么#dbdir/var/lib/munin没有被dbdir/var/lib/munin 和 为什么localhost 127.0.0.0/8::1没有被all替换 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 /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

给出了令人满意的结果,只剩下本地主机替换问题。

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

sudo sed -i 's!# dbdir!dbdir!g' /etc/munin/munin.conf
或者删除该行前面的
#

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


向我们显示输入文件的相关行。输入文件可能包含制表符而不是空格。您是以交互方式还是在脚本中执行此操作?如果是交互式的,您是否收到有关未找到历史记录项的错误消息?那是因为
是历史前缀。我将delimeter/替换为!所以我不必一直担心/\之类的事情。选择了错误的字符?实际上,因为
在引号内,它不会用作历史选择器,所以您可以。您是说您的脚本在
htmldir
中正常工作,但在
dbdir
中失败了吗?唯一的解释是,输入文件中的行与您在
sed
命令中输入的内容不匹配。那么sudo sed-i的!localhost 127.0.0.0/8::1!全部的g'/etc/munin/apache.conf'try
grep“localhost 127.0.0/8::1”/etc/munin/apache.conf
如果这不提供任何输出,则说明文本或空格错误。“grep”localhost 127.0.0.0/8::1“etc/munin/apache.conf”允许从localhost 127.0.0.0/8::1提供正确的输出
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