Tr (Unix)
# Tr (Unix)

tr è un comando disponibile nei sistemi operativi Unix e Unix-like . È un'abbreviazione di translate o transliterate, che indica che la sua funzione è di sostituzione o rimozione di caratteri dai dati di input.

## Panoramica

Lo strumento legge un flusso di byte dall'input standard e scrive il risultato nell'output standard . Come argomenti, accetta due insiemi di caratteri (generalmente della stessa dimensione) e sostituisce le occorrenze dei caratteri nel primo gruppo con gli elementi corrispondenti del secondo. Per esempio,

sostituisce tutti i caratteri del testo in ingresso da a a j, da b a k, da c a m e da d a n .

L'insieme di caratteri può essere abbreviato utilizzando intervalli di caratteri. L'esempio precedente potrebbe essere riscritto così:

Nelle versioni compatibili con POSIX di tr, l'insieme rappresentato da un intervallo di caratteri dipende dall'ordine alfabetico della lingua dell'elaboratore, quindi è più sicuro evitare intervalli di caratteri negli script che potrebbero essere eseguiti in una lingua diversa da quella in cui sono stati scritti. Gli intervalli possono spesso essere sostituiti con set di caratteri POSIX come [:alpha:].

Il flag s fa sì che tr comprima sequenze di caratteri identici in input in un singolo carattere nel suo output. Per esempio,

sostituisce le sequenze di uno o più caratteri di newline con uno solo "a capo".

Il flag d fa sì che tr cancelli tutte le occorrenze dell'insieme di caratteri specificato dal suo input. In questo caso viene utilizzato un solo argomento. Il seguente comando rimuove i caratteri di carriage return.

L'opzione c indica il complemento del primo insieme di caratteri. L'invocazione

quindi rimuove tutti i caratteri non alfanumerici.

## Implementazioni

La versione di tr presente in coreutils GNU è stata scritta da Jim Meyering.

Il comando è disponibile anche nella shell OS-9.

Un comando tr è presente anche tra gli MSX-DOS2 Tools di ASCII per MSX-DOS versione 2.

La maggior parte delle versioni di tr, tra cui GNU tr e Unix classico tr, operano su caratteri a byte singolo e non supportano Unicode . Un'eccezione è l'implementazione di Heirloom Toolchest, che fornisce il un supporto Unicode di base.

Anche Ruby e Perl hanno un operatore tr interno, che funziona in modo analogo. Il comando map string di Tcl è più generale in quanto mappa stringhe a stringhe mentre tr mappa caratteri a caratteri.

