Cómo usar el comando Tr en Linux

27 feb 2021 4 min di lettura
Cómo usar el comando Tr en Linux
Indice dei contenuti

Introducción

Tr es una utilidad de línea de comandos en sistemas Linux y Unix que traduce, elimina y comprime caracteres de la entrada estándar y escribe el resultado en la salida estándar.

El comando tr se usa típicamente junto con otros comandos a través de canalizaciones y puede realizar operaciones como eliminar caracteres repetidos, convertir mayúsculas a minúsculas y reemplazar y eliminar caracteres básicos.

En este tutorial, le mostraremos cómo usar el comando tr a través de ejemplos prácticos y explicaciones detalladas de las opciones más comunes.

Cómo usar el comando Tr

La sintaxis del comando tr es la siguiente:

tr OPTION... SET1 [SET2]

tr acepta dos conjuntos de caracteres, generalmente con la misma longitud, y reemplaza los caracteres del primer conjunto con caracteres coincidentes del segundo conjunto.

Un SET es básicamente una serie de caracteres que incluyen caracteres de escape especiales con barra invertida.

En el siguiente ejemplo, tr reemplazará todos los caracteres de la entrada noviello mapeando los caracteres del primer conjunto a los caracteres coincidentes del segundo conjunto.

echo 'noviello' | tr 'nov' 'red'

tr reemplazará cada aparición de n con r, o con e y v con d.

La salida se verá así:

redielle

Los juegos de caracteres también se pueden definir utilizando rangos de caracteres. Por ejemplo en lugar de escribir:

echo 'noviello' | tr 'nvl' 'xyz'
xoyiezzo

Puedes usar:

echo 'noviello' | tr 'ln' 'w-z'
yoviewwo

Cuando se usa la opción -c (--complement), tr reemplazará cualquier carácter que no se encuentre en SET1.

En el siguiente ejemplo, todos los caracteres que no están en SET1 serán reemplazados con el último carácter de SET2:

echo 'noviello' | tr -c 'no' 'xy'

Como habrá notado, la salida tiene un carácter más visible que la entrada. Esto se debe a que el comando echo imprime un carácter invisible \ n (nueva línea) que también se reemplaza por y. Para hacer eco de una cadena sin una nueva línea, use la opción -n.

noyyyyyoy

La opción -d (--delete) le permite eliminar los caracteres especificados en SET1.

El siguiente comando eliminará todos los caracteres especificados en SET1. Al eliminar caracteres sin comprimir, solo se puede especificar un conjunto.

echo 'noviello' | tr -d 'nol'

El carácter L no se eliminará porque la entrada incluye una letra L mayúscula mientras que el carácter l en el conjunto en minúsculas.

vie

La opción -s (--squeeze-repeats) reemplaza una secuencia de ocurrencias repetidas con el juego de caracteres en el último SET. El siguiente ejemplo eliminará los espacios repetidos:

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

Cuando se usa SET2, la secuencia de caracteres especificada en SET1 se reemplaza por SET2.

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

La opción -t (--truncate-set1) obliga a que SET1 se trunque a la longitud de SET2 antes de realizar el procesamiento posterior.

Por defecto, si SET1 es mayor que SET2 tr reutilizará el último carácter de SET2. Aquí hay un ejemplo:

echo 'novi ello' | tr 'abcde' '12'

La salida mostrará que el carácter e de SET1 coincide con el último carácter de SET2, que es 2:

novi 2llo

Ahora use el mismo comando con la opción -t:

echo 'novi ello' | tr -t 'abcde' '12'

Se puede ver que en este caso se eliminan los últimos tres caracteres de SET1. SET1 se convierte en 'ab', la misma longitud que SET2.

novi ello

Combinación de opciones

El comando tr también le permite combinar sus opciones. Por ejemplo, el siguiente comando reemplazará todos los caracteres excepto i con 0 y luego comprimirá los 0 caracteres repetidos:

echo 'novi ello' | tr -cs 'i' '0'
0i0

Convertir letras minúsculas a mayúsculas

La conversión de minúsculas a mayúsculas o al revés es uno de los casos de uso típicos del comando tr. [: lower:] coincide con todos los caracteres en minúscula y [: upper:] coincide con todos los caracteres en mayúscula.

echo 'Noviello' | tr '[:lower:]' '[:upper:]'
NOVIELLO

En lugar de clases de caracteres, también puede usar rangos:

echo 'Noviello' | tr 'az' 'A-Z'

Para convertir mayúsculas a minúsculas, simplemente cambie la posición de los conjuntos, luego:

echo 'Noviello' | tr '[:upper:]' '[:lower:]'
noviello

Eliminar todos los caracteres no numéricos

El siguiente ejemplo eliminará todos los caracteres no numéricos de la entrada al comando tr:

echo "numero 123-456-789" | tr -cd [:digit:]

[: dígito:] representa todos los caracteres de dígitos y, al utilizar la opción -c, el comando elimina todos los caracteres que no son dígitos. La salida se verá así:

123456789

Pon cada palabra en una nueva línea

Para poner cada palabra en una nueva línea, necesitamos hacer coincidir todos los caracteres no alfanuméricos y reemplazarlos con una nueva línea:

echo 'Coding is my cardio,' | tr -cs '[:alnum:]' '\n'

Debería recibir un mensaje de salida similar al siguiente:

Coding
 is
 my
 cardio

Eliminar líneas en blanco

Para eliminar las líneas vacías, simplemente presione los caracteres repetitivos de la nueva línea:

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

En el comando anterior estamos usando el símbolo de redirección < para pasar el contenido del comando mylog.txt al comando tr como entrada. El redireccionamiento > escribe la salida del comando en new_file.txt.

Imprima los directorios $ PATH en una línea separada

La variable de entorno $ PATH es una lista de directorios delimitada por dos puntos que le dice al shell en qué directorios buscar archivos ejecutables cuando escribe un comando.

Para imprimir cada directorio en una línea separada, necesitamos hacer coincidir los dos puntos ( :) y reemplazarlo con la nueva línea:

echo $PATH | tr ':' '\n'

Debería recibir un mensaje de salida similar al siguiente:

/usr/local/sbin
 /usr/local/bin
 /usr/sbin
 /usr/bin
 /sbin
 /bin...

Conclusión

A estas alturas, debería tener una buena comprensión de cómo usar el comando tr en Linux.

Buy me a coffeeBuy me a coffee

Supportaci se ti piacciono i nostri contenuti. Grazie.

Successivamente, completa il checkout per l'accesso completo a Noviello.it.
Bentornato! Accesso eseguito correttamente.
Ti sei abbonato con successo a Noviello.it.
Successo! Il tuo account è completamente attivato, ora hai accesso a tutti i contenuti.
Operazione riuscita. Le tue informazioni di fatturazione sono state aggiornate.
La tua fatturazione non è stata aggiornata.