Vim e Linea di Comando per acquisire un elenco di documenti da inserire in atti giudiziari utilizzando le Espressioni Regolari

La situazione di fatto e le premesse di sistema

La situazione di fatto rappresenta un evento molto comune nella pratica forense, ovvero la necessità di riportare in un atto giudiziario, nella sezione DOCUMENTI, un elenco (lungo ad libitum) di documenti formattati con uno schema del tipo DOC xx *.*, ovvero con prefisso DOC seguito da numerazione progressiva a due cifre e con estensione comprendente vari formati, tutti compatibili con il protocollo del PCT: ad esempio .pdf, .tiff, .jpg, .png.

Ad esempio

L'operazione viene effettuata in due passaggi essenziali:

  1. Il primo passaggio è costituito dalla linea di comando su prompt Windows (in linea di massima equivalente al terminale di Linux e macOS).
  2. Il secondo passaggio è costituito dall'applicazione di alcuni comandi tra cui una formula di regexp (ovvero Espressione Regolare) utilizzando il gestore di testi GVim. Ho separato la parte finale del secondo passaggio per evidenziare le caratteristiche della formula applicata.

La scelta di Windows deriva dalla diffusione dell'ambiente in ambito di lavoro e dalla necessità di dimostrare l'utilità attuale del tradizione sistema di gestione a linea di comando.

La linea di comando utilizzata può essere convertita, con le dovute modifiche, nelle linee di comando Unix, Linux e, quindi, anche macOS.

Il gestore di testi, ovvero GVim, è quello che sto utilizzando in questo momento ma, ovviamente, la stessa formula si può applicare a qualsiasi gestore abilitato alle Espressioni Regolari.

1. PRIMA PARTE

Il primo passaggio è quello della trasformazione dell'elenco su cartella in un file contenente i nomi grezzi e viene effettuato mediante applicazione di una stringa di comando a linea di testo: dir DOC*.* > elenco.txt

Analizziamo le singole componenti della linea di comando:

  1. dir è il comando tradizionale, derivato da DOS, che elenco il contenuto della Directory
  2. DOC è la parte testuale del comando e serve a filtrare l'elenco da eventuali altri documenti presenti nella stessa cartella (ovviamente se esistono altri documenti che iniziano con le stesse lettere saranno inserite nel filtro e dovranno, poi, essere eliminate a parte)
  3. *.* è la parte con i caratteri jolly e significa: includi tutti gli ulteriori caratteri successivi a quelli specifici già indicati con punto e qualsiasi estensione.
  4. > indica la destinazione del comando, ovvero dove il comando viene inviato, in particolare presupposto che dopo vi sia un nome di documento quale contenitore del filtraggio
  5. elenco.txt è il nome del documento che andrà a raccogliere il risultato del filtraggio.

Procediamo con il primo step:

  • Partendo dalla posizione di default utilizzo la linea di comando per spostarmi sulla cartelle contenente i files con il comando cd Documents
  • Effettuo un primo controllo visivo del contenuto della cartella con il semplice comando: dir (ovvero la stessa stringa sopra descritta ma senza opzioni)
  • Verificata la correttezza della cartella applico la formula dir DOC*.* > elenco.txt già sopra descritta:

Il sistema non dà alcun esito ma andando a vedere, anche con il tradizionale Blocco Note di Windows, il contenuto della cartella troveremo un nuovo file denominato, appunto, elenco.txt e contenente l'elenco del documenti:

FINE DELLA PRIMA PARTE

Adesso inizia la parte più tecnica (ma anche quella più divertente), ovvero l'utilizzo dell'editor di testo per la rifinitura del risultato.

2. SECONDA PARTE

  • Apro elenco.txt in GVim ed ottengo lo stesso risultato già visto con il Blocco Note.
  • Conto le prime righe da eliminare (sono 5 in tutto) prima di arrivare alla parte sostanziale:
  • Utilizzo il comando 5dd di Vim (GVim non è altro che Vim in modalità grafica) per eliminarle tutte in un colpo solo.
  • Utilizzo il comando per attivare il VISUAL BLOCK (ATTENZIONE! Questo comando è Ctrl-v nei sistemi operativi di origine Unix, ovvero Linux e macOS e Ctrl-q in Windows per evitare interferenze con il comando Incolla da Clipboard).
  • Salto direttamente al termine dell'elenco con il comando nj dove n è il numero di righe successive alla prima.
  • Evidenzio le colonne data, ora e la colonna di ZERI adiacente a DOC con il comando 3W (Attenzione: W maiuscolo per includere tutti caratteri intermedi)
  • Premo x per cancellare la parte evidenziata.

A questo punto abbiamo ottenuto questo risultato:

Siamo quasi arrivati al termine: occorre eliminare tutte le estensioni, ovvero i caratteri .pdf .tiff .png .jpg.

È giunto il momento di applicare la formula di regexp!

Applicazione della formula di regexp

Per completare la procedura di acquisizione utilizzo una formula tratta dalla sintassi delle Espressioni Regolari che andrò, poi, a commentare:

:%s/\.pdf\|\.tiff\|\.png\|\.jpg//g

La formula sembra complessa ma in realtà è una sequenza strettamente logica:

  • :%s è l'avvio di ogni operazione di sostituzione iniziando dalla parte superiore
  • Il primo slash / è l'inizio della stringa di ricerca
  • Tutti i successivi backslash sono codici di escape, ovvero neutralizzano i caratteri che seguono ciascuno di essi. In particolare neutralizzano i punti (che hanno un significato semantico ben preciso nelle Espressioni Regolari) e la pipe, che serve a collegare in OR i vari termini di ricerca.
  • Le ultime due slash // racchiudono il termine di sostituzione, ovvero il nulla
  • La lettera g finale indica la ricerca globale

In questo modo con un unico comando abbiamo ottenuto questo risultato:

Ovvero un risultato pulito e privo di elementi aggiuntivi, come le estensioni.

Pensate all'enorme risparmio di tempo che questo sistema potrebbe garantire in ipotesi di produzioni documentali numericamente molto consistenti!

Le Espressioni Regolari, se ben utilizzate, offrono, un'infinita potenzialità di ricerca e sostituzione!

Tralascio le ulteriori operazioni che potrebbero essere utilizzate se la destinazione fosse un sorgente LaTeX, ovvero l'inserimento dell'ambiente compactenum e i prefissi \item prima di ogni riga (perchè quella è un'altra storia) e mi fermo qui, ringraziando chiunque abbia avuto la pazienza di seguirmi.

Franco Pasut

Commenti

Post popolari in questo blog

PCT e collegamenti ipertestuali tra atti e documenti in Word, Writer e LaTeX

Atti giudiziari: utilizzare le variabili al posto dei nomi propri in Word, Writer e LaTeX

OCR PORTABILE E GRATUITO