Filtro con espressione in Miller
Filtro con espressione regolare in Miller.
A cura di
Totò Fiandaca
| issue
#243
| guida/e
Andrea Borruso
Caso d’uso
Come applicare, in un filtro dentro l’utility Miller, una espressione regolare.
Esempio
Supponendo di avere un file csv con enne record, per ogni record si presenta una delle parole none
, Polygon
, Point
e Line
, per filtrare i record che contengono queste parole, è molto utile usare un filtro con le espressioni regolari:
mlr --csv filter '$geom_type=~"^.{0,}Polygon.{0,}$"' out2.csv
questo filtro seleziona tutte le righe che nel campo geom_type
è presente la parola Polygon
per gli altri casi:
mlr --csv filter '$geom_type=~"^.{0,}Pont.{0,}$"' out2.csv
mlr --csv filter '$geom_type=~"^.{0,}Line.{0,}$"' out2.csv
mlr --csv filter '$geom_type=~"^.{0,}none.{0,}$"' out2.csv
dove:
filter
è un verbo di Miller$geom_type
richiamo l’attributo del file csv e che contiene i valori con cui filtrare;=~"^.{0,}Pont.{0,}$"
espressione regolare, dove:^
parti dall’inizio del valore.{0,}
qualsiasi carattere, presente 0 o infinite volte, prima della parola in esame (è equivalente.*
)$
fine valore
out2.csv
file di input
per evitare di lanciare tre volte il comando, si potrebbe fare un ciclo:
for i in none Polygon Line Point;do
<out2.csv mlr --csv filter '$geom_type=~"^.{0,}'"$i"'.{0,}$"' > classe_"$i".csv
done
Dati
- DBGT_10K_22_V01.gdb file pesante +5 GB
- out2.csv
Riferimenti utili
Ultima modifica 11/02/2023: add ricetta (294a8b0)