androide

Comando tr in linux con esempi

07 IMPARARE LINUX: CERTIFICAZIONE LINUX LPIC ESAMI 101 E 102 - Expand, Od VIDEORIPETIZIONI

07 IMPARARE LINUX: CERTIFICAZIONE LINUX LPIC ESAMI 101 E 102 - Expand, Od VIDEORIPETIZIONI

Sommario:

Anonim

tr è un'utilità della riga di comando nei sistemi Linux e Unix che traduce, elimina e comprime i caratteri dall'input standard e scrive il risultato nell'output standard.

Il comando tr può eseguire operazioni come la rimozione di caratteri ripetuti, la conversione di lettere maiuscole in minuscole e la sostituzione e la rimozione di caratteri di base. In genere, viene utilizzato in combinazione con altri comandi tramite piping.

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

Come usare il comando tr

La sintassi per il comando tr è la seguente:

tr OPTION… SET1

tr accetta due set di caratteri, generalmente con la stessa lunghezza, e sostituisce i caratteri dei primi set con i caratteri corrispondenti del secondo set.

Un SET è fondamentalmente una serie di caratteri, inclusi gli speciali caratteri con escape backslash.

Nel seguente esempio, tr sostituirà tutti i caratteri dallo 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 da r , i con e ed n con d :

reduxeze

I set di caratteri possono anche essere definiti utilizzando intervalli di caratteri. Ad esempio, invece di scrivere:

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

Puoi usare:

echo 'linuxize' | tr 'ln' 'w-z'

Quando viene utilizzata l'opzione -c ( --complement ), 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 avrai notato, l'output sopra ha un carattere più visibile dell'input. Questo perché il comando echo stampa un carattere di nuova riga invisibile che viene anche sostituito con y . Per eseguire l'eco di una stringa senza una nuova riga, utilizzare l'opzione -n .

L'opzione -d ( --delete ) dice a tr di cancellare i caratteri specificati in SET1. Quando si eliminano i caratteri senza stringere, specificare solo un set.

Il comando seguente rimuoverà i caratteri l , z :

echo 'Linuxize' | tr -d 'liz'

Il carattere L non viene cancellato perché l'input include una L maiuscola mentre il carattere l nel SET è minuscolo.

Lnuxe

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

Nel seguente esempio, tr rimuove i caratteri ripetuti dello spazio:

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 troncare SET1 alla lunghezza di SET2 prima di eseguire ulteriori elaborazioni.

Per impostazione predefinita, se SET1 è maggiore di SET2 tr riutilizzerà l'ultimo carattere di SET2. Ecco un esempio:

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

L'output mostra che il carattere e di SET1 è abbinato all'ultimo carattere di SET2, che è 2 :

Linux iz2

Ora usa lo stesso comando con l'opzione -t :

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

Linux ize

Puoi vedere che gli ultimi tre caratteri di SET1 sono stati rimossi. SET1 diventa 'ab', la stessa lunghezza di SET2 e non viene effettuata alcuna sostituzione.

Combinazione di opzioni

Il comando tr consente anche di combinare le sue opzioni. Ad esempio, il comando seguente sostituisce prima tutti i caratteri tranne i con 0 e quindi stringe i 0 caratteri ripetuti:

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

0i0i0

Esempi di comandi Tr

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

Converti lettere minuscole in maiuscole

La conversione di lettere minuscole in maiuscole o inverse è uno dei casi d'uso tipici del comando tr . corrisponde a tutti i caratteri minuscoli e corrisponde a tutti i caratteri maiuscoli.

echo 'Linuxize' | tr '' ''

LINUXIZE

Invece di classi di caratteri, puoi anche usare intervalli:

echo 'Linuxize' | tr 'az' 'A-Z'

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

Rimuovi 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 delle cifre e usando l'opzione -c , il comando rimuove tutti i caratteri non cifre. L'output sarà simile al seguente:

1234567890

Inserisci ogni parola in una nuova riga

Per inserire ogni parola in una nuova riga, dobbiamo abbinare tutti i caratteri non alfanumerici e sostituirli con una nuova riga:

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

GNU is an operating system

Rimuovi le righe vuote

Per eliminare le righe vuote è sufficiente premere i caratteri ripetitivi della nuova riga:

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

Nel comando sopra stiamo usando il simbolo di reindirizzamento < per passare il contenuto di file.txt al comando tr . Il reindirizzamento > scrive l'output del comando in new_file.txt .

Stampa le directory $PATH su una riga separata

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 caratteri singoli. Per una corrispondenza più complessa dei modelli e la manipolazione delle stringhe, è necessario utilizzare sed o awk .

terminale tr