首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >sed在<或>上不匹配

sed在<或>上不匹配
EN

Stack Overflow用户
提问于 2014-10-09 20:21:02
回答 2查看 127关注 0票数 1

我在一个配置文件中有这个:

代码语言:javascript
复制
<virtual-machine-pool mypool>
virtual-machine machine1
</virtual-machine-pool>

<virtual-machine machine1>
host 17.17.52.177 m34.mydomain.com
</virtual-machine>

我的脚本似乎忽略了<和>符号。

代码语言:javascript
复制
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

我得到了输出:

代码语言:javascript
复制
<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>

所需的输出为:

代码语言:javascript
复制
<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>

在我看来,我的脚本忽略了<和>,然后找到两次匹配并放入两次。

这是在安装了gnu-sed --default-name的OSX上实现的

感谢您的建议或帮助。

约翰

EN

回答 2

Stack Overflow用户

发布于 2014-10-09 20:26:47

不要对sed中的尖括号进行反斜杠。\<\>有特殊的含义:单词的开头和结尾。

票数 2
EN

Stack Overflow用户

发布于 2014-10-09 21:20:14

谢谢你,乔罗巴。毕竟,这确实有帮助。我不得不用^$替换。在那之后,它开始工作了。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/26278310

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档