簡體   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