Linux tr Command (Italiano)

Panoramica

In Linux, ci sono un sacco di utilità da riga di comando per la manipolazione del testo a nostra disposizione. In questo tutorial, discuteremo il comando tr.

Introduzione al comando tr

tr è l’abbreviazione di “translate”. È un membro del pacchetto GNU coreutils. Pertanto, è disponibile in tutte le distribuzioni Linux.

Il comando tr legge un flusso di byte dallo standard input (stdin), traduce o elimina i caratteri, quindi scrive il risultato nello standard output (stdout).,

La sintassi di utilizzo di tr è piuttosto semplice:

tr SET1 

Se non passiamo alcuna opzione a tr, sostituirà ogni carattere in SET1 con ogni carattere nella stessa posizione in SET2.

Poiché tr non supporta la lettura diretta di un file, se vogliamo applicarlo a un file di testo, dobbiamo reindirizzare il contenuto del file a tr o reindirizzare il file a stdin.,

Possiamo usare tr per eseguire trasformazioni di testo come:

  • conversione dei caratteri
  • spremitura di caratteri ripetuti
  • eliminazione di caratteri specifici
  • sostituzione di testo di base

Passiamo ad alcuni esempi per imparare come manipolare il testo usando tr.

Converti minuscolo in maiuscolo

Inizieremo con un problema di base: convertire tutti i caratteri minuscoli in maiuscolo in un file.,

Diamo un’occhiata a come risolvere il problema utilizzando il comando tr:

$ cat baeldung.urlwww.baeldung.com$ tr 'a-z' 'A-Z' < baeldung.urlWWW.BAELDUNG.COM

Nell’esempio sopra, abbiamo reindirizzato un file baeldung.url a stdin e ha chiesto a tr di eseguire la conversione del caso. Abbiamo usato gli intervalli di caratteri sia in SET1 che in SET2 per eseguire la conversione del caso.

In alternativa, possiamo anche risolvere il problema usando un paio di alias di set di caratteri incorporati:

$ tr '' '' < baeldung.url WWW.BAELDUNG.COM

Perché tr scriverà il risultato solo su stdout, dopo averlo eseguito, il nostro baeldung.il file url non viene modificato., Se vogliamo che il risultato tradotto venga riscritto nel file di input, possiamo reindirizzare lo stdout a un file temporaneo e quindi rinominare e sovrascrivere il file di input:

$ tr 'a-z' 'A-Z' < baeldung.url >tmp.txt && mv tmp.txt baeldung.url $ cat baeldung.urlWWW.BAELDUNG.COM

Basic Find and Replace

L’utilità tr è utile per alcune semplici operazioni di” trova e sostituisci ” in cui un carattere deve essere sostituito con un altro. Ad esempio, sostituiamo tutti i trattini con i caratteri di sottolineatura in un file:

$ cat env.txt$JAVA-HOME and $MAVEN-HOME are system variables.$ cat env.txt | tr '-' '_'$JAVA_HOME and $MAVEN_HOME are system variables.

Invece di usare il reindirizzamento, abbiamo usato il comando cat per inserire il contenuto del file env.da txt a tr.,

Oltre a trovare e sostituire un singolo carattere, tr può anche sostituire più caratteri. Vediamo un altro esempio di traduzione delle parentesi in parentesi:

$ echo "{baeldung}" | tr '{}' '()'(baeldung)

Possiamo anche usare tr per eseguire la traduzione dell’intervallo di caratteri., messaggio”) utilizzando tr:

In questo esempio, useremo il semplice Cesare, come il nostro algoritmo di crittografia: sostituire ogni lettera nel testo di input da una lettera di un certo numero fisso di posizioni giù per l’alfabeto, ad esempio la modifica “a” in “e”, la modifica “b” “c” e così via:

$ echo "this is a secret message" | tr 'a-z' 'e-zabcd' > secret.txt$ cat secret.txtxlmw mw e wigvix qiwweki

Per decrittografare il file segreto, noi di cambio SET1 e SET2 tr comando:

$ tr 'e-zabcd' 'a-z' < secret.txt this is a secret message

il Troncamento di un Modello di Ricerca

Se passiamo in rassegna gli esempi nella sezione precedente, possiamo notare che SET1 e SET2, si è passati alla tr sempre avuto la stessa lunghezza.,

Vediamo cosa tr ci darà se SET2 è più breve di SET1:

$ echo "abcdefg" | tr 'abcdefg' 'ABC'ABCCCCC

Quando SET2 è più breve di SET1, il comando tr, per impostazione predefinita, ripeterà l’ultimo carattere di SET2. Pertanto, vediamo nell’output sopra, l’ultima lettera in SET2, che è una “C”, viene ripetuta per abbinare le lettere da “d” a “g”. Quindi il comando si trasforma in tr ‘abcdefg ”ABCCCCC’.,

Possiamo usare l’opzione truncate “-t” per modificare questo comportamento predefinito, per permettere a tr di limitare la corrispondenza alla lunghezza di SET2:

$ echo "abcdefg" | tr -t 'abcdefg' 'ABC' ABCdefg

Spremere i caratteri ripetuti

Possiamo rimuovere le istanze ripetute di un carattere usando tr con l’opzione squeeze “-s”.

Vediamo un esempio di conversione di più spazi continui in un singolo spazio:

$ echo 'Hi, nice to meet you!' | tr -s ' ' Hi, nice to meet you!

Se passiamo l’opzione-s insieme a SET1 e SET2 a tr, prima eseguirà la traduzione, quindi stringerà i caratteri ripetuti in SET2., Ad esempio:

$ echo 'TODAYYYY IIIS SOOO COOOLD ~' | tr -s 'A-Z' 'a-z' today is so cold ~

Elimina caratteri specifici

Possiamo passare l’opzione “-d” a tr per eliminare i caratteri in SET1.

Non come l’opzione “-s”, quando passiamo “-d” insieme a SET1 e SET2 a tr, il SET2 verrà ignorato e non verrà eseguita alcuna traduzione.

Ad esempio, vogliamo eliminare tutte le lettere minuscole dal testo di input:

$ echo "A a B b C c" | tr -d 'a-z'A B C

Cerca il Complemento di SET1

Possiamo passare l’opzione “-c” a tr, per farlo cercare un complemento di SET1., Cercare il complemento di SET1 significa cercare l’inverso di SET1.

A volte questa opzione può semplificare la definizione di SET1.

Ad esempio, vorremmo abbinare qualsiasi carattere che non sia una lettera minuscola e tradurlo in spazi bianchi:

$ echo "#aMvery~handy tool" | tr -c 'a-z' ' 'tr is a very handy tool

Possiamo anche combinare l’opzione “-c” con “-d” o “-s”. Il prossimo esempio mostra come possiamo estrarre il numero ID dal cliente.file csv:

Nell’esempio sopra, dobbiamo includere il carattere di nuova riga (\n) in SET1., Altrimenti, anche tutte le interruzioni di riga nel file di input verranno eliminate e tutti i numeri id saranno concatenati insieme in una singola riga. Non è questo che vogliamo.

Conclusione

In questo articolo, abbiamo imparato come usare il comando tr attraverso vari esempi.

Il comando tr è una buona scelta se abbiamo bisogno di fare qualche trasformazione fondamentale del testo, come la conversione dei casi o la compressione di caratteri ripetuti.

Tuttavia, se ci troviamo di fronte a complessi problemi di elaborazione del testo, dovremmo pensare a utility più potenti come awk o sed.

Author: admin

Lascia un commento

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