Filtro (Unix)
# Filtro (Unix)

Nei sistemi operativi POSIX (Unix e Unix-like) un filtro è un programma che prende i dati dallo standard input e scrive il risultato sullo standard output. I filtri Unix sono spesso usati come componenti di una pipeline software, collegati dall'operatore pipe ("|"), che in una riga di comando significa che lo standard output del programma a sinistra dell'operatore è passato allo standard input del programma alla sua destra.

Visto il successo dell'uso dei filtri in ambienti Unix, anche altri sistemi operativi li hanno adottati:

* MS-DOS
* OS/2
* Microsoft Windows

Tuttavia, in tali sistemi operativi, i filtri sono molto meno usati che in Unix, e molti utenti non sanno nemmeno che esistono.

## Filtri che operano su input di tipo testo

Molti filtri sono usati per manipolare il testo e molti di questi applicano le proprie regole riga per riga, ecco alcuni tra quelli più comunemente usati:

* cut - estrae parti di ogni riga
* grep - estrae le linee che contengono certe parole e/o che rispondono a certe caratteristiche (vedi espressioni regolari)
* head - riporta soltanto le prime righe
* tail - riporta soltanto le ultime righe
* sort - ordina le righe (quindi restituisce tutto l'input, dopo averlo ordinato)
* uniq - elimina le righe ripetute (spesso usato insieme a sort
* comm
* expand
* fold - spezza su più righe in output le righe in input troppo lunghe
* nl - numera le linee
* paste
* pr
* split
* tee
* tr
* wc
* xargs
* awk e sed - questi possono essere usati per costruire filtri abbastanza complicati, perché sono in realtà degli interpreti di programmi (script) scritti in un linguaggio pensato espressamente per la manipolazione dei file di testo.

Per operazioni ancora più elaborate possono essere usati anche linguaggi di scripting come perl, php, python o shell programming come sh e bash, ma in questi casi la funzionalità di filtro non è quella principale del programma.

## Filtri che operano su altri formati di input (binari)

* compressione e decompressione file: gzip/gunzip, compress/uncompress, bzip2/bunzip2
* strings - estrazione di stringhe da file binari
* I programmi di manipolazione immagini della suite netpbm
* la suite flow-tools per la gestione delle registrazioni netflow
