tr è un programma di utilità a riga di comando nei sistemi Linux e Unix che traduce, elimina, e comprime i caratteri dallo standard input e scrive il risultato allo standard output.

Il comandotr può eseguire operazioni come la rimozione di caratteri ripetuti, la conversione da maiuscolo a minuscolo e la sostituzione e rimozione di caratteri di base. In genere, viene utilizzato in combinazione con altri comandi tramite piping.,

In questo tutorial, vi mostreremo come utilizzare il comando tr attraverso esempi pratici e spiegazioni dettagliate delle opzioni più comuni.

Come Utilizzare il Comando tr #

La sintassi per il tr comando è la seguente:

tr OPTION... SET1 

tr accetta due insiemi di caratteri, di solito con la stessa lunghezza, e sostituisce i caratteri del primo set con i corrispondenti caratteri del secondo set.,

A SET è fondamentalmente una stringa di caratteri, inclusi i caratteri speciali con escape backslash.

Nell’esempio seguente, tr sostituirà tutti i caratteri dello standard input (linuxize), mappando i caratteri del primo set con quelli corrispondenti del secondo set.,

echo 'linuxize' | tr 'lin' 'red'

Ogni occorrenza di l è sostituita con r i con e e n con d:

reduxeze

Il set di caratteri possono anche essere definite utilizzando le gamme di caratteri., Per esempio, invece di scrivere:

echo 'linuxize' | tr 'lmno' 'wxyz'

è possibile utilizzare:

echo 'linuxize' | tr 'l-n' 'w-z'

Quando -c (--complement) opzione viene utilizzata, tr sostituisce tutti i caratteri che non sono in SET1.

Nell’esempio seguente tutti i caratteri tranne “li” saranno sostituiti con l’ultimo carattere del secondo set:

echo 'linuxize' | tr -c 'li' 'xy'
liyyyiyyy

Come avrete notato, l’output sopra ha un carattere più visibile dell’input., Questo perché il comandoecho stampa un carattere di nuova riga invisibile\n che viene anche sostituito cony. Per fare eco a una stringa senza una nuova riga, utilizzare l’opzione-n.

L’opzione-d (--delete) indica atr di eliminare i caratteri specificati in SET1. Quando si eliminano i caratteri senza spremere, specificare un solo set.,

Il comando riportato di seguito per rimuovere l i e z caratteri:

echo 'Linuxize' | tr -d 'liz'

L carattere non viene eliminato perché l’ingresso è dotato di un maiuscolo L mentre l carattere della serie è in minuscolo.

Lnuxe

L’opzione-s(--squeeze-repeats) sostituisce una sequenza di occorrenze ripetute con il set di caratteri nell’ultimo SET.,

Nell’esempio seguente, tr rimuove i caratteri di spazio ripetuti:

echo "GNU \ Linux" | tr -s ' '

GNU \ Linux

Quando si utilizza SET2, la sequenza del carattere specificato in SET1 viene sostituita con SET2.

echo "GNU \ Linux" | tr -s ' ' '_'
GNU_\_Linux

L’opzione -t (--truncate-set1) forza tr a tronca SET1 alla lunghezza di SET2 prima di eseguire ulteriori elaborazioni.,

Per impostazione predefinita, se SET1 è più grande di SET2tr riutilizzerà l’ultimo carattere di SET2. Ecco un esempio:

echo 'Linux ize' | tr 'abcde' '12'

l’output mostra che Il carattere e da SET1 è abbinato con l’ultimo personaggio di SET2, che è 2:

Linux iz2

Ora, utilizzare lo stesso comando con il -t opzioni:

echo 'Linux ize' | tr -t 'abcde' '12'
Linux ize

Si può vedere che gli ultimi tre caratteri del SET1 vengono rimossi., SET1 diventa ‘ab’, la stessa lunghezza di SET2, e non viene effettuata alcuna sostituzione.

Combinazione di opzioni #

Il comandotr consente anche di combinare le sue opzioni. Per esempio, il comando riportato di seguito sostituisce tutti i caratteri tranne i con 0 e poi stringe le ripetute 0 caratteri:

echo 'Linux ize' | tr -cs 'i' '0'
0i0i0

Comando Tr Esempi di #

In questa sezione, vedremo alcuni esempi di usi comuni del tr comando.,

Converti minuscolo in maiuscolo #

Convertire minuscolo in maiuscolo o inverso è uno dei casi d’uso tipici del comandotr. corrisponde a tutti i caratteri minuscoli e corrisponde a tutti i caratteri maiuscoli.

echo 'Linuxize' | tr '' ''
LINUXIZE

Invece di classi di caratteri, è anche possibile utilizzare intervalli:

echo 'Linuxize' | tr 'a-z' 'A-Z'

Per convertire maiuscole in minuscole, è sufficiente cambiare le posizioni dei set.,

Rimuovere tutti i caratteri non numerici #

Il seguente comando rimuove tutti i caratteri non numerici:

echo "my phone is 123-456-7890" | tr -cd 

sta per tutti i caratteri numerici, e utilizzando il -c opzione, il comando rimuove tutti i non-caratteri numerici.,sarà simile a questa:

1234567890

Mettere ogni parola in una nuova linea #

mettere ogni parola in una nuova riga, abbiamo bisogno non di caratteri alfanumerici e sostituirli con una nuova linea:

echo 'GNU is an operating system' | tr -cs '' '\n'
GNUisanoperatingsystem

Rimuovere le righe vuote #

Per eliminare le righe vuote semplicemente spremere il ripetitivo caratteri di nuova riga:

tr -s '\n' < file.txt > new_file.txt

Nel comando si utilizza il simbolo di reindirizzamento < per passare il contenuto del tag file.txt per il tr comando., Il reindirizzamento> scrive l’output del comando sunew_file.txt.

Print directories PATH directories on a separate line #

La variabile ambientale$PATH è un elenco di directory delimitato da due punti che indica alla shell quali directory cercare i file eseguibili quando si digita un comando.,

Per stampare ogni directory su una riga separata dobbiamo abbinare i due punti (:) e sostituirlo con la nuova riga:

echo $PATH | tr ':' '\n'
/usr/local/sbin/usr/local/bin/usr/sbin/usr/bin/sbin/bin

Conclusione #

tr è un comando per tradurre o eliminare caratteri.

Sebbene molto utile,tr può funzionare solo con singoli caratteri. Per la corrispondenza di pattern e la manipolazione di stringhe più complesse, è necessario utilizzare sedoawk.

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *