11.04.2013 Views

Guida avanzata di scripting Bash - Portale Posta DMI

Guida avanzata di scripting Bash - Portale Posta DMI

Guida avanzata di scripting Bash - Portale Posta DMI

SHOW MORE
SHOW LESS

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

Appen<strong>di</strong>ce C. Una breve introduzione a Sed e Awk<br />

Si è appena visto il comando print <strong>di</strong> awk in azione. L’altra sola funzionalità <strong>di</strong> awk <strong>di</strong> cui è necessaria<br />

la spiegazione sono le variabili. Awk le tratta in modo simile a come sono gestite negli script <strong>di</strong> shell,<br />

anche se con una maggiore flessibilità.<br />

{ totale += ${numero_colonna} }<br />

In questo modo si aggiunge il valore <strong>di</strong> numero_colonna al totale <strong>di</strong> “totale”. Infine, per visualizzare<br />

“totale”, vi è il comando <strong>di</strong> blocco <strong>di</strong> co<strong>di</strong>ce END, da eseguire dopo che lo script ha elaborato<br />

completamente il proprio input.<br />

END { print totale }<br />

Corrispondente ad END, vi è BEGIN, per il blocco <strong>di</strong> co<strong>di</strong>ce che deve essere eseguito prima che awk<br />

inizi l’elaborazione del suo input.<br />

L’esempio seguente illustra come awk permetta <strong>di</strong> incrementare il numero <strong>di</strong> strumenti <strong>di</strong> veri<strong>di</strong>ca <strong>di</strong><br />

testo a <strong>di</strong>sposizione dello <strong>scripting</strong> <strong>di</strong> shell.<br />

Esempio C-1. Conteggio delle occorrenze <strong>di</strong> lettere<br />

#! /bin/sh<br />

# letter-count.sh: Conta le occorrenze <strong>di</strong> lettere in un file <strong>di</strong> testo.<br />

#<br />

# Script <strong>di</strong> nyal (nyal@voila.fr).<br />

# Usato con il permesso dell’autore.<br />

# Ricommentato dall’autore <strong>di</strong> questo libro.<br />

# Versione 1.1: Mo<strong>di</strong>ficata per funzionare con gawk 3.1.3.<br />

# (Funziona anche con le versioni precedenti.)<br />

INIT_TAB_AWK=""<br />

# Parametro per inizializzare lo script awk.<br />

conteggio=0<br />

FILE_INDICATO=$1<br />

E_ERR_PARAM=65<br />

utilizzo ()<br />

{<br />

echo "Utilizzo: letter-count2.sh file lettere" 2>&1<br />

# Per esempio: ./letter-count2.sh nomefile.txt a b c<br />

exit $E_ERR_PARAM # Parametri passati allo script insufficienti.<br />

}<br />

if [ ! -f "$1" ] ; then<br />

echo "$1: File inesistente." 2>&1<br />

utilizzo # Visualizza il messaggio <strong>di</strong> utilizzo ed esce.<br />

772

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!