Introduzione
Il tr
command è un'utilità della riga di comando di Linux che traduce o elimina i caratteri dall'input standard (stdin
) e scrive il risultato nello standard output (stdout
). Usa tr
per eseguire diverse trasformazioni del testo, inclusa la conversione di maiuscole e minuscole, la compressione o l'eliminazione di caratteri e la sostituzione di base del testo.
Dal tr
non è in grado di leggere un file direttamente e restituisce i risultati in output standard, viene spesso utilizzato con le pipe (|
) e reindirizza (>>
) per consentire un'elaborazione più complessa del contenuto dei file.
In questo tutorial imparerai a usare Linux tr
comando.
Prerequisiti
- Un sistema che esegue Linux.
- Accesso al terminale (Ctrl + Alt + T ).
Sintassi del comando Linux tr
Il tr
di base la sintassi del comando è:
tr [options] SET1 [SET2]
Opzioni
Esecuzione di tr
senza alcuna opzione sostituisce ciascuno dei caratteri specificati in SET1
con i caratteri di SET2
che hanno la stessa posizione.
Ad esempio:
Nell'esempio sopra, l'output del comando echo viene reindirizzato al tr
comando, sostituendo ogni istanza di e con o .
IMPOSTA
SET
s sono stringhe di caratteri. Il comando accetta le seguenti sequenze interpretate per la corrispondenza dei caratteri:
Sequenza | Interpretazione |
---|---|
\NNN | Caratteri con il NNN valore ottale (da 1 a 3 cifre ottali). |
\\ | Barra rovesciata. |
\a | Un campanello udibile. |
\b | Backspace. |
\f | Feed modulo. |
\n | Carattere di nuova riga. |
\r | Carattere di ritorno. |
\t | Scheda Orizzontale. |
\v | Scheda verticale. |
CHAR1-CHAR2 | Tutti i caratteri da CHAR1 a CHAR2 in ordine crescente. |
[CHAR*] | Copie CHAR* in SET2 fino alla lunghezza di SET1 . |
[CHAR*REPEAT] | Ripeti le copie di CHAR . Ripete l'ottale se si inizia con 0. |
[:alnum:] | Tutte le lettere e le cifre. |
[:alpha:] | Tutte le lettere. |
[:blank:] | Spazi bianchi orizzontali. |
[:cntrl:] | Tutti i caratteri di controllo. |
[:digit:] | Tutte le cifre. |
[:graph:] | Caratteri stampabili, escluso lo spazio. |
[:lower:] | Tutti i caratteri minuscoli. |
[:print:] | Caratteri stampabili, incluso lo spazio. |
[:punct:] | Tutti i caratteri di punteggiatura. |
[:space:] | Caratteri spazi vuoti orizzontali o verticali. |
[:upper:] | Tutte le lettere maiuscole. |
[:xdigit:] | Cifre esadecimali. |
[=CHAR=] | Tutti i caratteri equivalgono a CHAR . |
Nota: Un altro ottimo editor di flussi di testo Unix è SED. Lo strumento ti consente di cercare, sostituire, aggiungere ed eliminare righe in un file di testo senza aprirlo in un editor di testo.
Opzioni comando Linux tr
Le opzioni forniscono ulteriori azioni di trasformazione del personaggio. Le opzioni disponibili sono:
Opzione | Descrizione |
---|---|
-C | Completa i caratteri in SET1 , inclusi tutti i caratteri nell'output tranne quelli specificati. |
-c | Completa i valori in SET1 . Le operazioni si applicano ai personaggi che non sono nel set specificato. |
-d | Elimina i caratteri dal SET1 input. |
-s | Comprime i caratteri ripetuti specificati nell'ultimo operando (o SET1 o SET2 ) e li sostituisce con una singola occorrenza di quel carattere. |
-t | Tronca SET1 alla lunghezza di SET2 . |
-u | Assicura che qualsiasi output sia senza buffer. |
--help | Visualizza il file della guida con tutte le opzioni disponibili. |
--version | Visualizza le informazioni sulla versione del programma. |
Esempi di Linux tr
Di seguito sono riportati esempi di utilizzo del tr
comando con diverse opzioni per trasformare il testo di input.
Cambia carattere maiuscolo
Esistono tre modi per modificare le maiuscole e minuscole dei caratteri con tr
:
Specifica quali caratteri dell'input desideri convertire. Questa opzione cambia il carattere maiuscolo o interi caratteri, sostituendo quelli di SET1
con quelli di SET2
.
Ad esempio:
La specifica di un intervallo consente tr
per modificare il caso di qualsiasi carattere all'interno dell'intervallo specificato. L'esempio seguente mostra come convertire i caratteri maiuscoli in minuscoli:
Premi CTRL+C per uscire dalla modalità di immissione.
Abbina e converti i caratteri specificando sequenze interpretate. Ad esempio, la sequenza per i caratteri minuscoli è [:lower:]
e la sequenza per i caratteri maiuscoli è [:upper:]
. Specificando le due sequenze si istruisce tr
per abbinare e convertire il carattere maiuscolo:
L'esempio sopra mostra come tr
converte i caratteri maiuscoli in minuscoli.
Rimuovi i caratteri ripetuti
Il -s
l'opzione comprime i caratteri ripetuti in una singola istanza di quel carattere. L'opzione è particolarmente utile quando si convertono gli spazi bianchi in tabulazioni o caratteri di nuova riga e il testo di input contiene più spazi vuoti continui.
Ad esempio, l'input seguente contiene più spazi bianchi. La loro conversione in schede senza spremere fornisce il seguente risultato:
Per evitare più tabulazioni e spazi bianchi nell'output, specifica il -s
opzione:
Elimina caratteri
Rimuovi caratteri specifici utilizzando il -d
opzione. Nell'esempio seguente, tr
elimina ogni istanza di e carattere:
Facoltativamente, specificare un gruppo di caratteri utilizzando sequenze interpretate. Ad esempio, rimuovi tutte le cifre specificando il [:digit:]
sequenza:
Insiemi di complementi
Usa il -c
opzione per completare i caratteri in SET1
. Nell'esempio seguente, rimuoviamo tutti i caratteri tranne le cifre:
Tutti i caratteri non nel set specificato (in questo caso, tutto tranne le cifre) vengono rimossi.
Rimuovi i caratteri di nuova riga
Riduci lo spazio occupato da un testo convertendo i caratteri di nuova riga in spazi. Il contenuto viene quindi visualizzato in un'unica riga.
Nell'esempio seguente, utilizziamo il comando cat per aprire un file di testo e inviarlo tramite pipe a tr
per rimuovere i caratteri di nuova riga:
Reindirizza in tr
Un'alternativa al piping consiste nell'utilizzare il reindirizzamento per inserire i contenuti in tr
. Inoltre, puoi utilizzare il reindirizzamento per salvare il tr
output in un file.
L'esempio seguente mostra come rimuovere tutti i caratteri non stampabili da un file il cui contenuto viene reindirizzato in tr
:
Tronca insieme
Per impostazione predefinita, se SET1
è più lungo di SET2
, tr
riutilizza l'ultimo carattere di SET2
durante l'elaborazione dell'input. Ad esempio:
Da SET1
è più lungo di SET2
, tr
riutilizza l'ultimo carattere di SET2
, in questo caso, 2 .
Usa il -t
opzione per troncare SET1
alla lunghezza di SET2
:
Il -t
l'opzione indica tr
per troncare SET1
alla lunghezza di SET2
e sostituisce solo i primi due caratteri.
Rimuovi i segni diacritici
Usa il [=CHAR=]
sequenza in modo che corrisponda a tutti i caratteri equivalenti a quello specificato. Ad esempio, la sequenza può identificare e rimuovere i segni diacritici dai caratteri.
Stampa ogni parola separatamente
Stampa il contenuto di un file riga per riga utilizzando il -c
opzione e sostituisci i caratteri non alfanumerici con un carattere di nuova riga.
Nota: Se preferisci usare Bash, guarda come leggere un file riga per riga.
L'output viene ora visualizzato una parola alla volta.
Salva l'output su file
Da tr
non cambia direttamente il contenuto di un file, inoltre non salva le modifiche apportate. Salva l'output in un file reindirizzandolo come mostrato nell'esempio seguente:
Apertura del nuovo file con cat
mostra che le modifiche sono state salvate.
Conclusione
Questo tutorial ha mostrato come utilizzare il tr
comando e le sue opzioni disponibili per varie trasformazioni del testo. Dai un'occhiata ad altre utilità di testo Linux nelle nostre guide per il comando sort e meno pager terminale, oppure guarda i migliori editor di testo Linux.