我在一个配置文件中有这个:
<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>在我看来,我的脚本忽略了<和>,然后找到两次匹配并放入两次。
这是在安装了gnu-sed --default-name的OSX上实现的
感谢您的建议或帮助。
约翰
发布于 2014-10-09 20:26:47
不要对sed中的尖括号进行反斜杠。\<和\>有特殊的含义:单词的开头和结尾。
发布于 2014-10-09 21:20:14
谢谢你,乔罗巴。毕竟,这确实有帮助。我不得不用^$替换。在那之后,它开始工作了。
https://stackoverflow.com/questions/26278310
复制相似问题