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.

tsort<br />

uniq<br />

Capitolo 12. Filtri, programmi e coman<strong>di</strong> esterni<br />

Esegue un or<strong>di</strong>namento topologico <strong>di</strong> stringhe lette in coppia secondo i modelli forniti nell’input.<br />

Questo filtro elimina le righe duplicate <strong>di</strong> un file che è stato or<strong>di</strong>nato. È spesso usato in una pipe in<br />

coppia con sort.<br />

cat lista-1 lista-2 lista-3 | sort | uniq > listafinale<br />

# Vengono concatenati i file lista,<br />

# or<strong>di</strong>nati,<br />

# eliminate le righe doppie,<br />

# ed infine il risultato viene scritto in un file <strong>di</strong> output.<br />

L’opzione -c premette ad ogni riga del file <strong>di</strong> input il numero delle sue occorrenze.<br />

bash$ cat fileprova<br />

Questa riga è presente una sola volta.<br />

Questa riga è presente due volte.<br />

Questa riga è presente due volte.<br />

Questa riga è presente tre volte.<br />

Questa riga è presente tre volte.<br />

Questa riga è presente tre volte.<br />

bash$ uniq -c fileprova<br />

1 Questa riga è presente una sola volta.<br />

2 Questa riga è presente due volte.<br />

3 Questa riga è presente tre volte.<br />

bash$ sort fileprova | uniq -c | sort -nr<br />

3 Questa riga è presente tre volte.<br />

2 Questa riga è presente due volte.<br />

1 Questa riga è presente una sola volta.<br />

La sequenza <strong>di</strong> coman<strong>di</strong> sort FILEINPUT | uniq -c | sort -nr produce un elenco<br />

delle frequenze <strong>di</strong> occorrenza riferite al file FILEINPUT (le opzioni -nr <strong>di</strong> sort generano un<br />

or<strong>di</strong>namento numerico inverso). Questo modello viene usato nell’analisi dei file <strong>di</strong> log e nelle liste<br />

<strong>di</strong>zionario, od ogni volta che è necessario esaminare la struttura lessicale <strong>di</strong> un documento.<br />

Esempio 12-11. Analisi <strong>di</strong> frequenza delle parole<br />

#!/bin/bash<br />

# wf.sh: Un’analisi sommaria, su un file <strong>di</strong> testo, della<br />

#+ frequenza delle parole.<br />

# È una versione più efficiente dello script "wf2.sh".<br />

247

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

Saved successfully!

Ooh no, something went wrong!