opendatasicilia / tansignari

"T'ansignari e t'appeddiri"
http://tansignari.opendatasicilia.it
Creative Commons Attribution 4.0 International
18 stars 10 forks source link

[script] nessuna indicazione utile, come procedere #240

Closed pigreco closed 1 year ago

pigreco commented 1 year ago

Perché non fa nulla, nessun output, nessun messaggio. Mi aspetterei un elenco di file csv, un esempio di file sotto:

k,v
"01",residenziale
"0101",abitativa
"02",amministrativo
"0201",municipio
"0202",sede provincia
"0203",sede regione
"0204",sede ambasciata o consolato
"0205",sede di città metropolitana
"03",servizio pubblico
"0308",casello forestale

script usato:

<lista_demain.csv | while IFS="" read -r domain;do jq . dbgt10k_fc_domain.json | jq -r '.domains.'"$domain"'.codedValues' | mlr --j2c reshape -r '.' -o k,v >"$domain".csv;done

allego file:

dove:

aborruso commented 1 year ago

È colpa del while, che funziona meglio con questa sintassi, in cui metti il file di input in fondo

while IFS="" read -r domain; do
  jq -r '.domains.'"$domain"'.codedValues' dbgt10k_fc_domain.json |
  mlr --j2c reshape -r '.' -o k,v >"$folder"/data/"$domain".csv
done <lista_demain.csv

Per intero lo farei così

#!/bin/bash

set -x
set -e
set -u
set -o pipefail

folder="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"

# crea cartella per i dati, se non esiste
mkdir -p "$folder"/data

# rimuovi i file csv, se esistono
find "$folder"/data -type f -name '*.csv' -delete

while IFS="" read -r domain; do
  jq -r '.domains.'"$domain"'.codedValues' dbgt10k_fc_domain.json |
  mlr --j2c reshape -r '.' -o k,v >"$folder"/data/"$domain".csv
done <lista_demain.csv
pigreco commented 1 year ago

Perfect!

grazie assai.