Posso usar o caractere “/” no awk

0

Estou trabalhando com alguns .xml e preciso extrair parte deles. Eu preciso extrair o bloco entre a linha onde aparecem >21120352</PMID> e a linha onde aparece </PubmedArticle>

Mas a sintaxe do awk usa "/" então isso me dá um erro. Eu também usei o equivalente U + 002F, mas as soluções retornam mais do que eu quero.

No momento, tenho esta solução:

awk '/>21120352</,/PubmedArticle>/' file.xml

Também usei o curinga:

awk '/>21120352<.PMID>/,/<.PubmedArticle>/' file.xml

Minha pergunta é se é possível pesquisar usando </PMID> e </PubmedArticle>

    
por Cesar AJ 02.08.2017 / 12:56

2 respostas

1

Você precisa escapar do / com uma barra invertida: \/ .

awk '/>21120352<\/PMID>/,/<\/PubmedArticle>/' file.xml

Como alternativa ao awk, sugiro dar uma olhada na função XMLStarlets xml sel , que é melhor na análise de arquivos XML.

    
por RoVo 02.08.2017 / 13:00
0

Como uma alternativa para escapar do padrão usando uma barra invertida \ , você também pode usar uma variável para definir seu padrão:

awk '$0~pattern' pattern=">21120352</,/PubmedArticle>/" filename

Mais soluções alternativas     

por Ravexina 02.08.2017 / 13:06