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