[gl-como] Regular expression per parsare xml, ma anche no

Fabio Comuni fabrix.xm@gmail.com
Ven 6 Mar 2009 14:04:47 CET


Riccardo (SCASI) ha scritto:
> Jio ha scritto:
>> Il problema: ho questa bella riga xml:
>> <symbol type='CODE-39'><data><![CDATA[20090003296]]></data></symbol>
>> assegnata alla variabile $dati in un script bash.
>> la parte iniziale: <symbol type='CODE-39'><data><![CDATA[
>> e la finale: ]]></data></symbol>
>> sono fisse, a me serve assegnare la parte in mezzo alla variabile $dato
>> Un'anima pia con un pò più di esperienza di me con sed ed awk mi può
>> dare una mano che fra parentesi quadre, punti esclamativi e slash mi
>> sono incasinato senza arrivare a nulla.
>> Grazie 1000 in anticipo.
> 
> nel caso in cui la parte in mezzo sia _sempre_e_solo_ composta da 11 
> cifre (come in questo caso) puoi usare:
> 
> dato=$(echo $a | sed "s/.*\([0-9]\{11\}\).*/\1/")
> 
> ciao
> riki


questo tira fuori quello che c'è tra
CDATA[ e ]
se non c'è, ritorna vuoto (opzioni -n e /p)

dato=$( echo $a | sed -n "s/.*CDATA\[\([^]]*\)\].*/\1/p" )



Maggiori informazioni sulla lista gl-como