< or >

2014-10-09 5 views
1

에 일치하지 않는 나는 구성 파일이 있습니다< or >

<virtual-machine-pool mypool> 
virtual-machine machine1 
</virtual-machine-pool> 

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

내 스크립트는 <와> 기호를 무시하는 것 같다.

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

내 스크립트가 <을 무시하고> 다음 번 경기를 찾는 것을 날 것으로 보인다

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 

나는 출력을 얻을 그것을 두 번 넣는 것.

어떤 조언이나 도움을

감사를 설치 이것은 GNU-나오지 --default-이름으로 OSX에 있습니다.

+0

관련 http://stackoverflow.com/questions/26237735/escaping-angled-bracket-acts-similar-to-look-ahead –

답변

1

나오지에서 꺾쇠 괄호를 백 슬래시하지 마십시오. \<\>은 특별한 의미가 있습니다. 단어의 시작과 끝.

+0

좋아,하지만 여전히 동일한 출력을 받고 제거. – xjohn

0

감사합니다. choroba. 그것은 결국 도움이되었습니다. </virtual-machine>을^$로 대체해야했습니다. 그 후에 그것은 일하기 시작했습니다.

관련 문제