Extrai dados de XML e gera XLS com dados extraídos

Parte 1:
xml_convert_xls.sh

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
#!/bin/bash 
# nomesaida="lista_excel$(date +%Y-%m-%d).xls"
# bloco_tmp="/tmp/tmp_convert.txt"
n=0
log="./tmp/"
rm -f $log/*
#> $bloco_tmp
 
 
echo "Separando blocos referenciados pela tag '</entity>'"
while read i
do
 
echo $i | grep "</entity>" > /dev/null
if [ $? -ne 0 ]; then
        nome=$(echo "$i" | grep "<name>" | sed 's/<name>//g' | sed 's/<\/name>//g' | grep @)
        redirecionamento=$(echo "$i" | grep "<redirect>" | sed 's/<redirect>//g' |sed 's/<\/redirect>//g' | grep @)
        quota=$(echo "$i" | grep "<quota>" | sed 's/<quota>//g' | sed 's/<\/quota>//g')
 
                if [ ! -z "$nome" ] || [ ! -z "$redirecionamento" ] || [ ! -z "$quota" ] ;then
 
                        if [ ! -z $nome ];then
                                echo "_nome: $nome" >> $log/bloco_tmp.$n
                        fi
                        if [ ! -z $redirecionamento ];then
                                echo "_redirect: $redirecionamento" >> $log/bloco_tmp.$n
                        fi
                        if [ ! -z $quota ];then
                                echo "_quota: $quota" >> $log/bloco_tmp.$n
                        fi
                fi
 
else
        echo $((n++))
fi
 
done < alliar.csv
 
echo "Blocos separados e criados em ./tmp/"
echo "Rode o comando ./xml_convert_xls-parte2.sh para converter os blocos em um único arquivo xls"
 
# Marcelo Viana
# AMDG

Parte 2:
xml_convert_xls-parte2.sh

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
#!/bin/bash
nomesaida="lista_excel$(date +%Y-%m-%d).xls"
> $nomesaida
 
echo "Nome      Quota   Redirecionamento" > $nomesaida
 
for file in $(ls tmp/)
do
                while read i
                do
 
                        nome_=$(echo "$i" | grep "_nome:" | sed 's/_nome: //g')
                        if [ ! -z "$nome_" ];then
                                nome="$nome_"
                        fi
                        quota_=$(echo "$i" | grep "_quota:" | sed 's/_quota: //g')
                        if [ ! -z "$quota_" ];then
                                quota="$quota_"
                        fi
                        redirect_=$(echo "$i" | grep "_redirect:" | sed 's/_redirect: //g')
                        if [ ! -z "$redirect_" ];then
                                redirect="$redirect_"
                        fi
 
                done < tmp/$file
        echo "$nome     $quota  \"$redirect\"" >> $nomesaida
        echo "$nome     $quota  $redirect"
        nome=""
        quota=""
        redirect=""
 
done
 
echo ""
echo "xls gerado: [ $nomesaida ]"
 
# Marcelo Viana
# AMDG

Deixe uma resposta

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *