Lendo um xml com shell script

Tempo de leitura: 1 minuto

Esta semana estava fuçando em umas coisas para um script e achei neste blog aqui uma dica bem legal sobre como ler um xml em shell script.

Eu, pelo menos, precisava ler um xml de retorno do Google da API do Google Maps.
Como eu não queria processar isto via uma outra linguagem ( como o Python ) cacei uma solução em shell script.

Vou pegar um trecho de xml qualquer ( não o que eu processei, para usar como exemplo ):

 

<Logentry>
<name>Ataliba Teixeira</name>
<id>01</id>
<game>Angry Birds
</Logentry>

O código é este abaixo :

#!/bin/bash

#Looking for four keywords in here
for key in name id game
do
OUTPT=`grep $key log.xml | tr -d ‘\t’ | sed ‘s/^\([^<].*\)$/\1/’ `
eval ${key}=`echo -ne \””${OUTPT}”\”`
done

# Getting the results in four specific arrays
namearr=( `echo ${name}` )
idarr=( `echo ${id}` )
gamearr=( `echo ${game}` )

#Print all Arrays
echo ${namearr[@]}
echo ${idarr[@]}
echo ${gamearr[@]}

 

O resultado ( array ) você pode tratar do modo como achar mais pertinente. Outra sed ou um awk para pegar um campo específico, etc.

Eu achei uma mão na roda para ler o xml diretamente via shell.
Se tiverem uma outra solução mais legal, posta aí para discutirmos.

Sobre ataliba

Pai, marido e analista de sistemas especializado em Linux e Network que fala aqui sobre suas especialidades para tentar ajudar mais os colegas e a comunidade do Software Livre.