Pular para o conteúdo

Ajuda 'pegar um trecho de texto de uma linha' [RESOLVIDO]

Responder tópico
  • Denunciar
  • Indicar

1. Ajuda 'pegar um trecho de texto de uma linha' [RESOLVIDO]

Enviado em 01/03/2011 - 11:59h

Bom dia a todos, sou iniciante em shell, bom e preciso fazer o seguinte: Tenho um arquivo em xml que é da seguinte forma:
<patch id="sbmenh_20090831" patch-order="2">
<files>
<file name="common.jar" type="jar"/>
<file name="sbmadapter_ws.jar" type="jar"/>
</files>
</patch>
<patch id="xx" patch-order="3">
<files>
<file name="bpmportal.jar" type="jar"/>
</files>
</patch>
<patch id="yy" patch-order="4">
<files>
<file name="sbmadapterframework.jar" type="jar"/>
</files>
</patch>
<patch id="zz" patch-order="5">

Bom o dilema é o seguinte, eu preciso pegar todas as informações que estão nesses tipos de linha:
<patch id="xx" patch-order="5"> (os xx, yy e zz) e armazenar tendo a seguinte saida
xx, yy ,zz

Pensei em utilizar um while para varrer o arquivo linha por linha:

while read linha
do

if ........

done < file

Mas o grande problema é pegar o trecho do texto que eu preciso, pesquisei e acho que teria que ser com o comando sed -r e alguma expressão regular, mas não consegui passar disso. Alguém pode me ajudar com isso?
Agradeço a qualquer ajuda...

Responder tópico

2. Re: Ajuda 'pegar um trecho de texto de uma linha' [RESOLVIDO]

Enviado em 01/03/2011 - 14:11h

Cheguei a mais ou menos isso:

PATCHFIELD = cat /opt/SBM75/patches/sbm-patches.xml | grep -o '<patch id=' - Pega as linhas que me interessam...
while read LINHA
do
PATCH = echo $PATCH + echo',' + `echo $LINHA | sed -e 's/<patch id=" //g' -e 's/" patch-order=//g` - pega trechos das linhas interessam
done < PATCHFIELD

3. Exemplo

Enviado em 01/03/2011 - 16:30h

Você poderia tentar algo do tipo:

grep "\<patch id=*\>" arquivo.xml | awk '{print $2}' | sed -ne 's/.*=//g' -e 's/\"//gp' | paste -s -d ','

4. Re: Ajuda 'pegar um trecho de texto de uma linha' [RESOLVIDO]

Enviado em 01/03/2011 - 18:09h

Perfeito....resolveu todo o problema, pelo jeito vou ter que estudar muito shell....., valeu mesmo SMarcell

Responder tópico

Responder tópico

Entre na sua conta para responder.

Fazer login para responder