GNU/Linux >> Linux Esercitazione >  >> Linux

Comando Tr in Linux con esempi

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

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

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

Come usare il tr Comando #

La sintassi per tr il comando è il seguente:

tr OPTION... SET1 [SET2]

tr accetta due set di caratteri, generalmente della stessa lunghezza, e sostituisce i caratteri del primo set con i caratteri corrispondenti del secondo set.

Un SET è fondamentalmente una stringa di caratteri, inclusi i caratteri speciali con escape barra rovesciata.

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 viene sostituito con r , i con e e n con d :

reduxeze

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

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

puoi usare:

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

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

Nell'esempio seguente tutti i caratteri tranne "li" verranno 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 rispetto all'input. Questo perché echo comando stampa un carattere di nuova riga invisibile \n che viene anche sostituito con y . Per fare eco a una stringa senza una nuova riga, usa -n opzione.

Il -d (--delete ) l'opzione dice a tr per eliminare i caratteri specificati in SET1. Quando si eliminano i caratteri senza schiacciarli, specificare un solo set.

Il comando seguente rimuoverà l , i e z caratteri:

echo 'Linuxize' | tr -d 'liz'

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

Lnuxe

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

Nell'esempio seguente, tr rimuove gli spazi ripetuti:

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

Quando si utilizza SET2, la sequenza dei caratteri specificata in SET1 viene sostituita con SET2.

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

Il -t (--truncate-set1 ) l'opzione forza tr per 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 da SET1 è abbinato all'ultimo carattere di SET2, che è 2 :

Linux iz2

Ora usa lo stesso comando con -t opzione:

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

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

Opzioni combinate #

Il tr comando ti consente anche di combinare le sue opzioni. Ad esempio, il comando seguente sostituisce prima tutti i caratteri tranne i con 0 e poi spreme il ripetuto 0 caratteri:

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

Esempi di comando Tr #

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

Converti da minuscolo a maiuscolo #

La conversione da minuscolo a maiuscolo o viceversa è uno dei casi d'uso tipici di tr comando. [:lower:] corrisponde a tutti i caratteri minuscoli e [:upper:] corrisponde a tutti i caratteri maiuscoli.

echo 'Linuxize' | tr '[:lower:]' '[:upper:]'
LINUXIZE

Invece delle classi di caratteri, puoi anche utilizzare intervalli:

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

Per convertire le maiuscole in minuscole, cambia semplicemente le posizioni dei set.

Rimuovi tutti i caratteri non numerici #

Il comando seguente rimuove tutti i caratteri non numerici:

echo "my phone is 123-456-7890" | tr -cd [:digit:]

[:digit:] sta per tutti i caratteri numerici e usando il -c opzione, il comando rimuove tutti i caratteri non numerici. L'output sarà simile a questo:

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 '[:alnum:]' '\n'
GNU
is
an
operating
system

Rimuovi le righe vuote #

Per eliminare le righe vuote è sufficiente comprimere i caratteri di nuova riga ripetitivi:

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

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

Il $PATH La variabile ambientale è 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 far corrispondere 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 corrispondenze di modelli e manipolazioni di stringhe più complesse, dovresti usare sed o awk .

Se hai domande o feedback, sentiti libero di lasciare un commento.


Linux
  1. Comando wc Linux con esempi

  2. Comando di ordinamento Linux con esempi

  3. Comando Tee Linux con esempi

  4. Comando testa di Linux con esempi

  5. Comando JQ in Linux con esempi

Comando Linux watch con esempi

Attendi comando in Linux con esempi

Comando di esportazione Linux con esempi

Riavvia il comando in Linux con esempi

Comando IP Linux con esempi

Comando Linux tr con esempi