Il vero potere di Linux è che ci sono molti programmi/utilità creati per semplificarci la vita. Quando scrivi molti script di shell nel tuo ambiente, questo insieme di programmi è utile, in cui utilizzerai questi programmi per manipolare l'input o l'output negli script. Una di queste utilità è tr
, che sta per traduci . Come suggerisce il nome, il comando tr viene utilizzato per tradurre, spremere ed eliminare i caratteri dallo standard input, scrivendo nello standard output nei sistemi operativi simili a Linux e Unix.
In questo articolo, impareremo l'utilizzo del comando tr con esempi pratici. Alla fine di questa guida, ti sentirai a tuo agio nell'usare il comando tr e scoprirai in quale scenario sarebbe utile utilizzare questo comando.
sintassi del comando tr e guida
Per conoscere la sintassi e l'elenco degli argomenti supportati dal comando tr, fare riferimento alla pagina man o utilizzare --help
segnala con tr
comando.
$ man tr
$ tr --help
Il tr
comando accetta due argomenti sotto forma di SET1 e SET2 dove SET1 verranno inseriti i caratteri che verranno tradotti in caratteri in SET2 . Quando alcuni flag vengono passati al comando tr, è possibile utilizzare SET2 opzionalmente.
tr [OPTION]… SET1 [SET2]
Esempio 1 - Traduci con il comando tr
Di seguito è riportato un semplice esempio di come utilizzare tr
comando. Il tr
il comando viene inviato tramite pipe con echo
comando e "ost" minuscolo viene convertito in maiuscolo "OST" .
La conversione qui avverrà in base alla posizione dei caratteri in due set. Il primo carattere in SET1 sarà sostituito dal primo carattere in SET2 (o->O ), allo stesso modo per tutti i caratteri (s->S ,t->T ).
$ echo "ostechnix" | tr "ost" "OST"
OSTechnix
Lettura consigliata:
- Comando Bash Echo spiegato con esempi in Linux
Esempio 2 - Set di caratteri e caratteri speciali
Il tr
Il comando offre l'uso di set di caratteri il che rende la conversione molto semplice. Il tr
il comando può anche interpretare caratteri speciali come (\n
,\t
,\v
) che può essere tradotto con caratteri diversi.
Diamo un'occhiata a come utilizzare il set di caratteri. Nell'esempio seguente, ho stringhe, numeri interi e caratteri di punteggiatura. i caratteri di punteggiatura sono sostituiti da un punto (.
) utilizzando "[:punct:]"
set di caratteri.
$ echo "Ubuntu 20.04 #$%^" | tr "[:punct:]" "."
Esempio 3 - Conversione di casi
Quando si lavora con le stringhe, potresti voler cambiare il caso della stringa da inferiore a superiore o viceversa. Usando il tr
comando, puoi eseguire la conversione delle maiuscole in diversi modi.
Nel primo modo, puoi digitare a a z sia nel set 1 che nel set 2.
$ echo "ostechnix" | tr "abcdefghijklmnopqrstuvwxyz" "ABCDEFGHIJKLMNOPQRSTUVWXYZ"
OSTECHNIX
Tieni presente che questo non è un modo preferito.
Invece di digitare tutti i caratteri, puoi anche utilizzare intervalli (ad esempio a-z , A-Z ).
$ echo "ostechnix" | tr "a-z" "A-Z" # Lower to Upper case
OSTECHNIX
$ echo "OSTECHNIX" | tr "A-Z" "a-z" # Upper to Lower case
ostechnix
Le classi di caratteri possono essere utilizzate anche al posto dei due metodi precedenti.
$ echo "OSTECHNIX" | tr "[:upper:]" "[:lower:]"
ostechnix
$ echo "ostechnix" | tr "[:lower:]" "[:upper:]"
OSTECHNIX
Esempio 4 - Elimina caratteri
Ci sono una serie di argomenti opzionali che tr
supporta per eseguire varie azioni.
Uno di questi flag è "-d
o --delete
" che cancellerà i caratteri forniti in SET1.
Di seguito è riportato l'input in cui ho tre IP con spazi bianchi in ciascuna riga e schede (2) nella terza riga. Ora usando il -d
flag puoi pulire gli spazi bianchi.
192.168. 1. 12 192.168. 1. 13 192.168. 1. 14
Esegui il comando seguente che cancellerà tutti gli spazi bianchi. Un punto importante da notare qui è che le schede non vengono rimosse ma vengono rimossi solo gli spazi bianchi.
$ tr -d " " < tr_test.txt
Se desideri rimuovere sia lo spazio che le tabulazioni (spazi bianchi orizzontali), puoi utilizzare il "[:blank:]"
set di caratteri.
$ tr -d "[:blank:]" < tr_test.txt
Puoi anche usare il "[:space:]"
set di caratteri per eliminare gli spazi bianchi orizzontali e verticali.
$ tr -d "[:space:]" < tr_test.txt
Esempio 5:ripetizioni di compressione
Quando il flag "-s
o --squeeze-repeats
" viene utilizzato, i caratteri ripetuti forniti in SET1 verranno sostituiti con una singola occorrenza del carattere. Nell'esempio seguente, puoi vedere che ho usato 4 uguale a (=
) cartello. Ora -s
sostituirà 4 (=
) con 1 (=
).
$ echo "Production IP ==== 192.168.1.10" | tr -s "=" Production IP = 192.168.1.10
Di seguito è riportato un altro esempio in cui i caratteri di nuova riga (\n
) vengono compressi.
$ cat tr_test.txt | tr -s "\n"
Esempio 6 - Complemento
Quando il -c
flag viene utilizzato, eseguirà una traduzione inversa per il set specificato. Nell'esempio seguente, tr tradurrà tutti gli alfabeti in "*"
normalmente. Ma quando -c
viene utilizzato, l'operazione verrà invertita. A parte gli alfabeti, tutti gli altri caratteri verranno sostituiti con "*"
.
$ echo "Employee Number is 1267890" | tr -c "[:alpha:]" "*"
Puoi combinarlo con altri flag per ottenere determinati risultati. Ad esempio quando si combina con -d
flag, eseguirà un'operazione di eliminazione inversa.
$ echo "Employee Number is 1267890" | tr -cd "[:digit:]"
Nota: Dall'esempio sopra, puoi vedere che anche il carattere di nuova riga è tradotto/cancellato. Quando si utilizza questo metodo, tenere presente questo punto e procedere.
Esempio 7 - Reindirizzamento output
In tutte le sezioni precedenti, abbiamo letto l'input dal file e fatto alcune elaborazioni con il tr
comando e l'output viene inviato al terminale. Se desideri reindirizzare l'output su un file anziché su un terminale, utilizza l'operatore di reindirizzamento.
$ tr -s "\n" < tr_test.txt > new_tr_test.txt
$ cat new_tr_test.txt
Lettura correlata:
- Il reindirizzamento di Bash spiegato con esempi
Conclusione
In questo articolo, ti ho spiegato come usare il tr
comando. In Linux, ci sono sempre più modi per ottenere la stessa cosa. Tutto ciò che abbiamo mostrato in questo articolo può essere ottenuto anche con altri programmi come sed
, awk
, ecc. Ma conoscere questi comandi e modi diversi ti aiuterà a decidere la situazione giusta per utilizzare il comando/programma giusto.