XML - Extrai duas ou mais tags em apenas uma frase usando sed

0

Eu tenho um arquivo xml com a seguinte estrutura:

<object>
 <class = "a"> xyz </class>
 <class = "b"> xyz </class>
 <class = "c"> xyz </class>
 <class = "d"> xyz </class>
</object>

Eu preciso extrair apenas algumas tags.

Por exemplo: class="a" e class="c"

Para remover uma classe, tenho o seguinte comando:

sed -n '/<class name="a"/,/<\/class/p' sourcefile.xml >> result.xml

Então, para duas tags eu poderia usar o seguinte:

sed -n '/<class name="a"/,/<\/class/p' sourcefile.xml >> result.xml
sed -n '/<class name="c"/,/<\/class/p' sourcefile.xml >> result.xml

mas, duas iterações seriam feitas no arquivo. É possível fazer isso em uma única iteração?

Atualização:

Saída:

<class = "a"> xyz </class>
 <class = "c"> xyz </class>
    
por JohnPortella 14.10.2016 / 04:57

1 resposta

0

que tal no awk?

$ awk -F"[<>]" '/\"a\"|\"c\"/{print $3}' test.t
 a value
 c value

$ cat test.t
<object>
 <class = "a"> a value </class>
 <class = "b"> xyz </class>
 <class = "c"> c value </class>
 <class = "d"> xyz </class>
</object>
    
por 14.10.2016 / 05:20

Tags