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
[modifica | modifica wikitesto]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,
tr 'abcd' 'jkmn'
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ì:
tr 'a-d' 'jkmn'
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,
tr -s '\n'
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.
tr -d '\r'
L'opzione c
indica il complemento del primo insieme di caratteri. L'invocazione
tr -cd '[:alnum:]'
quindi rimuove tutti i caratteri non alfanumerici.
Implementazioni
[modifica | modifica wikitesto]La versione di tr
presente in coreutils GNU è stata scritta da Jim Meyering.[1]
Il comando è disponibile anche nella shell OS-9.[2]
Un comando tr
è presente anche tra gli MSX-DOS2 Tools di ASCII per MSX-DOS versione 2.[3]
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.[4][5] Il comando map string di Tcl è più generale in quanto mappa stringhe a stringhe mentre tr mappa caratteri a caratteri.[6]
Note
[modifica | modifica wikitesto]- ^ https://linux.die.net/man/1/tr
- ^ Paul S. Dayan, The OS-9 Guru - 1 : The Facts, Galactic Industrial Limited, 1992, ISBN 0-9519228-0-7.
- ^ MSX-DOS2 Tools User's Manual by ASCII Corporation
- ^ tr (String) - APIdock, su apidock.com, APIdock. URL consultato il 12 August 2015.
- ^ tr - perldoc.perl.org, su perldoc.perl.org. URL consultato il 12 August 2015.
- ^ Tcl Built-In Commands - string manual page, su tcl.tk. URL consultato il 12 August 2015.
Voci correlate
[modifica | modifica wikitesto]Collegamenti esterni
[modifica | modifica wikitesto]- tr(1) pagina del manuale di Unix, su man.cat-v.org.
- tr(1) pagina del manuale di FreeBSD, su freebsd.org.
- tr(1) pagina del manuale di Linux, su man7.org.
- esempi di utilizzo, su examplenow.com. URL consultato il 18 settembre 2019 (archiviato dall'url originale il 23 luglio 2012).