Egrep várias strings em um arquivo XML

1

Eu tenho uma coleção de arquivos XML em um formato padrão que gostaria de pesquisar para ver se eles correspondem a duas strings.

Aqui está a ideia:

<ELEMENT1>Dave</ELEMENT>
<DON'TCARE1>Blaa</DON'TCARE2>
<DON'TCARE2>Blaa2</DON'TCARE2>
<ELEMENT2>History</ELEMENT2>

Como posso combinar o conteúdo de ELEMENT1 e ELEMENT2 com egrep e retornar o nome do arquivo que os contém?

    
por blarg 07.03.2014 / 13:33

2 respostas

3

Com o recente% GNUgrep construído com PCRE recente:

grep -Po '<(ELEMENT[12]>)\K.*?(?=</)'
    
por 07.03.2014 / 13:49
2

O XQuery a seguir deve fornecer a saída desejada:

for $x in (/content/element1,/content/element2)
return $x/text()

Por exemplo, com um interpretador XQuery como XQilla e um arquivo de entrada como

<?xml version="1.0" ?>
<content>
   <element1>truc</element1>
   <dontcare>blah</dontcare>
   <dontcare>blah</dontcare>
   <element2>truc2</element2>
   <dontcare>blah</dontcare>
   <dontcare>blah</dontcare>
</content>

xqilla -i 1.xml 1.query de saídas

truc
truc2

Para o seu exemplo, regexps podem ser suficientes, mas no caso geral, é uma má idéia usá-los para análise XML porque o XML não é um idioma regular (ou seja, um idioma analisável com expressões regulares).

    
por 07.03.2014 / 14:06

Tags