繁体   English   中英

sed在<或>上不匹配

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM