[英]sed not matching on < or >
我在配置文件中有这个:
<virtual-machine-pool mypool>
virtual-machine machine1
</virtual-machine-pool>
<virtual-machine machine1>
host 17.17.52.177 m34.mydomain.com
</virtual-machine>
我的脚本似乎忽略了<和>符号。
sed -e "/\(\<virtual-machine machine1\>\)/{:a;n;/<\/virtual-machine>/ba;i\\\n\ <virtual-machine machine-new\>\n\ host 1.2.3.4 m40.mydomain.com\n\ include /etc/virtuals/config.backoff\n\ <\\\virtual-machine\>" -e '}' file
我得到的输出:
<virtual-machine-pool mypool>
virtual-machine machine1
</virtual-mta>
<virtual-machine machine-new>
host 1.2.3.4 m40.mydomain.com
include /etc/virtuals/config.backoff
<\virtual-mta>
<virtual-machine machine1>
<virtual-machine machine-new>
host 1.2.3.4 m40.mydomain.com
include /etc/virtuals/config.backoff
<\virtual-machine>
host 17.17.52.177 m34.mydomain.com
</virtual-machine>
所需的输出是:
<virtual-machine-pool mypool>
virtual-machine machine1
</virtual-mta>
<virtual-machine machine1>
host 17.17.52.177 m34.mydomain.com
</virtual-machine>
<virtual-machine machine-new>
host 1.2.3.4 m40.mydomain.com
include /etc/virtuals/config.backoff
<\virtual-mta>
在我看来,我的脚本忽略了<和>,然后两次找到匹配项并将其放入两次。
这是在OSX上安装了gnu-sed --default-names
感谢您的任何建议或帮助。
约翰
请勿在sed中反斜线尖括号。 \\<
和\\>
具有特殊含义:单词的开头和结尾。
谢谢choroba。 毕竟确实有帮助。 我不得不用^ $替换</ virtual-machine>。 之后,它开始工作。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.