mai più senza
Published in

mai più senza

VisiData: salvare una procedura e applicarla ad altri file

➡NOTA BENE: questo tutorial è uno dei paragrafi della guida VisiData.

Introduzione

In VisiData è possibile salvare il log delle operazione fatte e riutilizzarlo per applicarle nuovamente al file di input.

Se ad esempio a partire da questo file CSV (sotto l'anteprima) si volessero cancellare tutte le righe che contengono il solo carattere a nella prima colonna e infine salvare l'output, la procedura è:

  • vd input.csv;
  • posizionarsi nella prima colonna e pigiare | per attivare la selezione tramite espressione regolare, scrivere ^a$ e premere INVIO. Verrà fatta la selezione descritta;
  • pigiare in sequenza g e d per cancellare le righe selezionate;
  • poi CTRL+s;
  • infine scegliere un nome di output (ad esempio output.csv) e pigiare INVIO per salvare il file.

Per salvare la procedura di sopra in un file di log, bisognerà premere CTRL+d, scegliere un nome per salvare il file (ad esempio cancella_le_a.vd) e pigiare INVIO.

Il file di log salvato avrà un contenuto come quello sottostante (è un file TSV), in cui sono "mappate" tutte le operazioni fatte:

Per riapplicare la stessa procedura al file, senza interagire con lo schermo, il comando da lanciare è:

vd -b -p cancella_le_a.vd
  • -b per eseguire VisiData senza attivarne l'interfaccia;
  • -p per replicare un file di log.

Se questo comando si lancia dopo avere già creato il file di output, si avrà un messaggio di errore, che avvisa che il file esiste già e non può essere sovrascritto.
Per fare in modo che venga sovrascritto bisognerà aggiungere l’opzione -y:

vd -y -b -p cancella_le_a.vd

A schermo verrà restituito l’elenco delle operazione svolte:

opening cancella_le_a.vd as vd
"input.csv"
opening input.csv as csv
select rows matching regex in current column
"^a$"
search wrapped
2 matches for /^a$/
selected 2 rows
delete (cut) selected rows and move them to clipboard
copied 2 rows to clipboard
deleted 2 rows
save current sheet to filename in format determined by extension (default .tsv)
"output.csv"
saving 1 sheets to output.csv as csv
replay complete

Applicare le stesse procedure a un file diverso, ma omologo

Spesso si ha la necessità di applicare una stessa procedura ad altri file, con la stessa struttura, ma con contenuti differenti.
Per utilizzare il file di log creato con un file diverso da input.csv, bisognerà modificare il file di log (si modifica con qualsiasi editor di testo):

  • rimuovere la riga con il riferimento a input.csv
  • rimuovere il riferimento al nome del foglio (qui è input, come il nome del file).

Diventerà quindi:

Fatto questo, il comando da usare con un nuovo file denominato ad esempio input_nuovo.csv sarà:

vd -y -b -p cancella_le_a.vd input_nuovo.csv

In output verrà creato il file output.csv.

Se si vuole creare un file di output con nome diverso, si deve cancellare dal file di log la riga in cui si fa riferimento a output.csv e lanciare il comando:

vd -y -b -p cancella_le_a.vd input_nuovo.csv -o output_nuovo.csv

Nota sul file di log

Si tratta di un TSV, è possibile leggerlo con un client dedicato. Quindi si può modificare proprio con VisiData:

--

--

--

di tutto quel superfluo che è indispensabile

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store
Andrea Borruso

Andrea Borruso

#data #maps #GIS #baci #condivisione. Orgoglioso di essere presidente di @ondatait

More from Medium

Mastering The Challenges Of Data In Local Government | Peak Indicators

Azure Synapse Analytics from the Moon

SELECT * FROM SQL_OPTIMIZATION

Leveraging Azure Synapse Analytics Integrations