Rispondendo ad un utente su it.comp.os.linux.iniziare, mi è venuto in mente un quesito che forse potrebbe non essere del tutto insensato.
Vi propongo lo schemino qui sotto:
Codice: Seleziona tutto
---> sed_nomi ------->
/ \
pdftotoext -- -----> paste out-nomi out-indirizzi
\ /
---> sed_indirizzi -->
Abbiamo un comando iniziale che produce un output in questo caso stampa a video un file di testo.
Questo output viene preso contemporaneamente in consegna da due elaborazioni distinte:
- nella fattispecie una fa il parse di nominativi, producendo come output una colonna di "NOME E COGNOME"
- l'altra elaborazione fa il parse dei corrispondenti indirizzi, producendo una colonna del tipo "INDIRIZZO"
Alla fine questi due output vengono presi e passati contemporaneamente al comando finale "paste" che li utilizza come argomenti per stampare un banale file contenente una cosa tipo: "NOME COGNOME;INDIRIZZO".
Vi aggiungo qui sotto un tentativo di script bash per ottenere lo stesso risultato finale, ma usando un file temporaneo di appoggio.
Codice: Seleziona tutto
#!/bin/bash
INPUT=$1
CONVERTED=immigrati.txt
pdftotext -layout $INPUT $CONVERTED
paste -d\; \
<(sed -n 's/^[0-9]*\s*\([A-Z].*[A-Z]\)\s\{8,\}\([A-Z].*[A-Z]\)\s*[M,F]$/\1;\2/p' $CONVERTED) \
<(sed -n 's/^Residenza:\s*\([A-Z].*[0-9,a-z,A-Z]\)\s*$/\1/p' $CONVERTED)
rm $CONVERTED
https://www.gnu.org/software/bash/manua ... bstitution
Si può evitare di stampare gli output dei due comandi di parse su altri due files temporanei.
Ma resta sempre la necessità di appoggiarsi ad un file temporaneo $CONVERTED.
Esiste qualche metodo in bash (ma anche in altri linguaggi) per gestire una procedura tipo quella riportata nello schemino?
PS.
L'esempio riportato voleva solo essere di accompagnamento.
Ciò che mi interessava in questa domanda era lo schema:
- prendo un output
- lo duplico (ma perchè no... lo ennuplo
- prendo gli N output e applico a ciascuno una rielaborazione differente
- prendo gli N output che ne escono e li riutilizzo come input di un'operazione finale
Grazie in anticipo!