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

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

Rafael
supertchuco

(usa Solaris)

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


  


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

Rafael
supertchuco

(usa Solaris)

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

Sandro Marcell
SMarcell

(usa Slackware)

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]

Rafael
supertchuco

(usa Solaris)

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

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






Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts