Skip to content

Instantly share code, notes, and snippets.

@aborruso
Created June 2, 2019 08:16
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save aborruso/f678e308178899b0eabd3c61fb38e288 to your computer and use it in GitHub Desktop.
Save aborruso/f678e308178899b0eabd3c61fb38e288 to your computer and use it in GitHub Desktop.
#!/bin/bash
set -x
# crea variabile temporanea per memorizzare il nome della cartella
folder="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
# rimuovi dalla cartella ogni CSV
rm "$folder"/*.csv
# estrai dal file xlsx tutti i fogli come CSV
# vengono creati dei CSV con nome che inizia con tmp__ seguito dal nome del foglio
pyexcel transcode "$folder"/"37_Sicilia_Indicatori per singola provincia, anno e dominio.xlsx" "$folder"/tmp.csv
# per ogni FILE CSV creato fai pulizia e ristrutturazione con Miller
for i in "$folder"/*.csv; do
# crea una variabile per raccogliere il nome di ogni file file CSV, senza estensione
nomefile=$(echo "$i" | sed -r 's|^(.*/)(.+)(\.csv)$|\2|g')
# crea una variabile per creare un nome di output dei file senza il suffiso tmp__ e senza estensione
nome=$(echo "$i" | sed -r 's|^(.*\/)(tmp__)(.+)(__)(.+.csv)$|\3|g')
# fai la pulizia e ristrutturazione con Miller
mlr --csv clean-whitespace \
then put -S 'if (${Unità di misura} == "") {$Indicatore = ${Indicatori del dominio}} else {$Indicatore = ""}' \
then fill-down -f Indicatore \
then filter -S '${Unità di misura} != ""' \
then put -S 'for (k in $*) {$[k] = gsub($[k], "\.\.+"i, "");}' \
then put -S 'for (k in $*) {$[k] = gsub($[k], "^-+$", "");}' \
then reshape -r "^2" -o anno,valore \
then reorder -f Indicatore \
then put -S '$foglio="'"$nome"'"' \
then filter '$valore>-999999' \
then sort -f foglio,Indicatore -n anno,"N." "$folder"/"$nomefile".csv >"$folder"/"$nome".csv
done
# rimuovi tutti i CSV con nome con suffisso tmp__
rm "$folder"/tmp_*.csv
# crea un unico file di insieme
mlr --csv cat "$folder"/*.csv >"$folder"/Sicilia_Indicatori_per_singola_provincia_anno_e_dominio.csv
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment