Quello che voglio presentarvi come primo articolo è un utile, almeno lo è stato per me, script shell che effettua un lavoro analogo a quello fatto dalla funzione Excel cerca.vert(). Nel mio caso specifico mi serviva incrociare un file contenente una lista di articoli con un altro file contentente la relativa data di prevista consegna in magazzino, il terzo file di output generato avrà agganciata all’estremità della riga la data di prevista consegna.

#!/bin/bash
PERCORSO=/work_path
FILE_SORGENTE=$PERCORSO/$1
FILE_DESTIN=$PERCORSO/out_$1
FILE_ORFLIS=$PERCORSO/$3

if test $# -ne 4
then

echo
echo " HELP:"
echo \
" Questo Shell script effettua il cercavert su file CSV delimitati dal separa- "
echo \
" tore punto e virgola (;) "
echo
echo \
" USO: `basename $0` "
echo
exit -1;

fi

if test -f "$FILE_DESTIN"
then

$(rm $FILE_DESTIN);

fi

while read line
do

ARTICOLO=$(echo $line | cut -d';' -f$2)
RIGA_CONSEGNA=$(grep ";$ARTICOLO;" $FILE_ORFLIS)
DATA_CONSEGNA=$(echo $RIGA_CONSEGNA | cut -d';' -f$4)
echo -n $line | tr -d '\r' >> $FILE_DESTIN
echo "$DATA_CONSEGNA;" >> $FILE_DESTIN

done < $FILE_SORGENTE

Lo script funziona con i file CSV delimitati da punto e virgola (utilizza il carattere punto e virgola per individuare i campi), ma può benissimo essere utilizzato un altro separatore sostituendolo a quello passato come parametro al comando cut, elimina il carattere di Carriage Return con il comando tr, in quanto il file risultato poi andava letto su sistema operativo Windows. Lo script può essere modificato anche per effettuare un elenco di file da incrociare includendolo un semplice ciclo esterno.