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 premereINVIO
. Verrà fatta la selezione descritta; - pigiare in sequenza
g
ed
per cancellare le righe selezionate; - poi
CTRL+s
; - infine scegliere un nome di output (ad esempio
output.csv
) e pigiareINVIO
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: