GNU/Linux >> Linux Esercitazione >  >> Linux

Usare il comando tr in Linux per giocare con i personaggi

Il comando tr in Linux traduce un set di caratteri in un altro. Può sostituire un carattere o un insieme di caratteri con un altro carattere o insieme di caratteri. tr legge l'input dallo standard input e visualizza l'output sullo standard output. L'input può anche essere dato in un file o usando il comando echo.

tr è l'abbreviazione di tradurre .

Il formato standard per il comando tr è:

$ tr [option] [char_set 1] [char_set 2]

In base alle opzioni specificate, il comando tr sostituisce l'insieme di caratteri in "set 1" con "set 2".

Sostituzione dei caratteri

Per sostituire i caratteri usando il comando tr è sufficiente menzionare i caratteri da sostituire nel 1° set e i caratteri che devono essere messi al loro posto dopo la sostituzione nel 2° set.

$ tr 'a' '1'

Questo comando attenderà l'input da STDIN. Dopo aver ottenuto l'input, l'output sullo schermo apparirà con tutte le istanze di "a" sostituite da "1".

1. Usare echo con il comando tr

L'esempio sopra legge l'input da STDIN. Il comando Echo può fornire input insieme al comando tr. Utilizzare l'operatore Pipe(|) per eseguire i comandi insieme.

$  echo "apples and bananas" | tr 'a' '1'

2. Prendere input da un file

tr può anche prendere il suo input da un file. Ciò è utile quando la traduzione deve essere eseguita su una raccolta voluminosa di testo. L'operatore di reindirizzamento (<) viene utilizzato per fornire input da un file.

$ tr 'a' '1' < input.txt

input.txt contiene lo stesso testo dell'esempio sopra.

Per salvare il testo in un file, utilizzare l'operatore di reindirizzamento(>) per reindirizzare l'output a un file.

$ tr 'a' '1' < input.txt > output.txt

Cambiare il caso del testo con il comando tr

Uno degli usi più comuni del comando tr è tradurre il testo da minuscolo a maiuscolo o viceversa.

Poiché tr funziona su insiemi di caratteri, possiamo menzionare esplicitamente l'insieme di caratteri minuscoli come set 1 e l'insieme di caratteri maiuscoli come set 2 per effettuare il passaggio.

$ echo "apples and bananas" | tr a-z A-Z

Imposta a-z rappresenta l'insieme di lettere minuscole e l'insieme A-Z rappresenta l'insieme di lettere maiuscole.

Un altro modo per fare lo stesso è :

$ echo "apples and bananas" | tr [:lower:] [:upper:]

Qui, [:lower:] rappresenta l'insieme di alfabeti minuscoli e [:upper:] rappresenta l'insieme degli alfabeti maiuscoli.

Eliminazione di caratteri con tr

tr ha la capacità di eliminare una serie di caratteri dal testo. Ciò si ottiene utilizzando tr insieme a -d comando.

$  echo "apples and bananas" | tr -d 'n'

Questo comando eliminerà tutte le occorrenze di 'n' nel testo.

Per rimuovere le occorrenze di più caratteri, menziona tutti i caratteri tra virgolette singole.

$  echo "apples and bananas" | tr -d 'na'

Questo comando rimuoverà le occorrenze di 'n' e 'a'

Poiché tr funziona a livello di personaggio, tutte le singole occorrenze di 'n' e 'a' vengono rimossi. È facile sbagliarsi e pensare che il comando rimuoverà solo le occorrenze di 'na' che si verificano in quella sequenza. Tuttavia, non è così.

Comprime più occorrenze in una

Comprimere più occorrenze in una può essere utile per comprimere il testo. Viene spesso utilizzato per rimuovere istanze di più spazi tra le righe.

-s l'opzione è usata con tr per spremere.

$ echo "apples and bananas" | tr -s 'p'

Più occorrenze di "p" in apple sono state ridotte a una singola occorrenza.

$  echo "apples and bananas" | tr -s 'na' '1'

L'output di questo comando è equivalente a quello della prima sostituzione delle occorrenze dei caratteri 'n' e 'a ' con '1' , seguita da un'operazione di compressione. Per confrontare guarda il secondo comando nell'output. Il risultato del secondo comando è la semplice sostituzione dei caratteri.

Spremiamo tutti gli 1 nell'output del secondo comando per vedere se otteniamo lo stesso output del primo.

Otteniamo lo stesso output del primo comando nell'output.

Per rimuovere gli spazi bianchi consecutivi nel testo usa :

$  echo "apples    and    bananas" | tr -s " " 

In alternativa [:spazio:] può essere utilizzato al posto di ” “

$ echo "apples    and    bananas" | tr -s [:space:]

Estrazione di cifre dal testo

Per realizzare operazioni in cui è necessario preservare solo un particolare insieme di caratteri. È meglio usare -c opzione. -c viene utilizzato per completare l'insieme.

Complemento di un insieme significa tutto il resto diverso da quello che c'è in quell'insieme.

$ echo " Home : 011 1234 4321" | tr -cd [:digit:],'\n' 

Menzionando '\n' (nuova riga) è importante perché altrimenti l'output non ha una nuova riga e si confonde con la riga successiva nel terminale. Un altro motivo per non ignorare le nuove righe durante l'eliminazione dei caratteri è che il file potrebbe avere più cifre in più righe. Se il carattere di nuova riga viene eliminato, tutti i numeri verranno visualizzati insieme senza spazio.

Estrarre parole dal testo

Questo processo è l'esatto opposto di quello eseguito sopra. Qui ignoreremo le cifre e ci concentreremo solo sulle parole composte da lettere.

$ echo " Home : 011 1234 4321" | tr -d [:digit:]

In questo esempio abbiamo semplicemente cancellato tutte le cifre dal testo.

Un modo più controllato per fare lo stesso sarebbe attraverso il complemento.

$ echo " Home : 011 1234 4321" | tr -cd [:alpha:],'\n'

[:alfa:] rappresenta l'insieme degli alfabeti. Pensala come una raccolta dei due set, inferiore e superiore.

[:alpha:] = [:lower:] + [:upper:]

Conteggio del numero di occorrenze di parole

Contare quante volte una parola compare in un testo può essere utile per costruire istogrammi. È anche molto utile nella creazione di modelli probabilistici per il rilevamento dello spam e-mail.

Per prima cosa, creiamo un file con alcune parole ricorrenti.

A volte può essere utile visualizzare ogni parola del testo in una nuova riga.

$ tr -cs "[:alpha:]" "\n" < input.txt

Per ottenere il numero di occorrenze per ogni parola usa:

$ tr -cs "[:alpha:]" "\n" < input.txt | sort | uniq -c

Ordina viene utilizzato per ordinare l'elenco in modo lessicografico. uniq -c conta le singole occorrenze di ogni parola e restituisce il risultato come un elenco di parole con un conteggio.

Conclusione

Il comando tr è utile per eseguire traduzioni basate sui caratteri. Se combinato con altri comandi come sort o uniq, il comando tr può rivelarsi molto potente. Leggi di più sul comando tr nella sua pagina man. Quando si applicano trasformazioni su un'intera riga, è possibile utilizzare il comando sed.


Linux
  1. Pianificazione delle attività con il comando cron di Linux

  2. Diagnostica i problemi di connettività con il comando ping di Linux

  3. Controlla i comandi e le attività con il comando watch di Linux

  4. Sostituisci le virgolette intelligenti con il comando sed di Linux

  5. Pianifica un'attività con il comando Linux at

Utilizzo del comando GREP in Linux con esempi

Come trovare file con il comando fd in Linux

Tutorial sull'uso del comando Timeout su Linux

Tutorial sull'utilizzo dell'ultimo comando nel terminale Linux

Pianifica i lavori in Linux con il comando 'at'

Comando Linux tr con esempi