Trova e sostituisci parole di un campo specifico
A cura di
Dennis Angemi
| issue
#204
| guida/e
Andrea Borruso
Immaginiamo di avere un file CSV e di voler operare una sostituzione che interessi solo un campo.
| Titolo | Autore |
|---|---|
| Divini Commedia | Dante Alighieri |
| Il fu Mattia Pascal | Luigi Pirandello |
| Random Title | Giacomo Divini |
Potremmo, ad esempio, voler sostituire la parola Divini con la parola Divina presente nel campo Titolo senza intaccare le occorrenze presenti nel campo Autore (in cui è presente un autore il cui cognome è Divini).
Titolo,Autore
Divini Commedia,Dante Alighieri
Il fu Mattia Pascal,Luigi Pirandello
Random title, Giacomo Divini
È possibile utilizzare la utility miller e lanciare
mlr --csv put '$Titolo=sub($Titolo,"Divini","Divina")' file.csv
per ottenere
| Titolo | Autore |
|---|---|
| Divina Commedia | Dante Alighieri |
| Il fu Mattia Pascal | Luigi Pirandello |
| Random Title | Giacomo Divini |
rawfile:
Titolo,Autore
Divina Commedia,Dante Alighieri
Il fu Mattia Pascal,Luigi Pirandello
Random title, Giacomo Divini
Il comando sopra riportato restituisce in output un file CSV con le modifiche richieste. La funzione invocata è sub che richiede tre argomenti separati da una virgola: il nome del campo, la stringa da cercare, la stringa desiderata. Si noti che:
subè in grado di sostituire solo la prima occorrenza di una cella; se si desidera modificare tutte le occorrenze di una cella, si deve utilizzare la funzionegsub;- se il nome del campo è costituito da più parole separate da uno spazio è necessario utilizzare la sintassi con le paretesi graffe
${nome campo}.
Per maggiori informazioni si visiti arigadicomando - Fare un trova e sostituisci per campo
Riferimenti
- Miller : https://github.com/johnkerl/miller