El comando tr
es una utilidad de línea de comandos de Linux que traduce o elimina caracteres de la entrada estándar (stdin) y escribe el resultado en la salida estándar (stdout). Usa tr
para realizar diferentes transformaciones de texto, incluyendo conversión de mayúsculas y minúsculas, compresión o eliminación de caracteres y reemplazo básico de texto.
Como tr
no puede leer un archivo directamente y muestra los resultados en la salida estándar, a menudo se usa con tuberías (|) y redirecciones (>>) para permitir un procesamiento más complejo del contenido de los archivos.
En este tutorial, aprenderás a usar el comando tr
de Linux.
Sintaxis del comando tr
de Linux
La sintaxis básica del comando tr
es:
tr [opciones] CONJUNTO1 [CONJUNTO2]
Opciones
Ejecutar tr
sin opciones reemplaza cada uno de los caracteres especificados en CONJUNTO1 con los caracteres de CONJUNTO2 que tienen la misma posición.
Por ejemplo:
echo "adictosalinux" | tr 'a' 'o'
odictosolinux
Ejecutando el comando tr
sin opciones. En el ejemplo anterior, la salida del comando echo
se envía a través de una tubería al comando tr
, reemplazando cada instancia de “a” con “o”.
CONJUNTO
Los CONJUNTOS (SETs) son cadenas de caracteres. El comando acepta las siguientes secuencias interpretadas para la coincidencia de caracteres:
Secuencia | Interpretación |
---|---|
\NNN | Caracteres con el valor octal NNN (de 1 a 3 dígitos octales). |
\\ | Barra diagonal inversa. |
\a | Un carácter de campana audible. |
\b | Retroceso. |
\f | Avance de página. |
\n | Carácter de nueva línea. |
\r | Carácter de retorno. |
\t | Tabulación horizontal. |
\v | Tabulación vertical. |
CHAR1-CHAR2 | Todos los caracteres de CHAR1 a CHAR2 en orden ascendente. |
[CHAR*] | Copia CHAR* en CONJUNTO2 hasta la longitud de CONJUNTO1. |
[CHAR*REPEAT] | Repite copias de CHAR. Repite octal si comienza con 0. |
[:alnum:] | Todas las letras y dígitos. |
[:alpha:] | Todas las letras. |
[:blank:] | Espacios en blanco horizontales. |
[:cntrl:] | Todos los caracteres de control. |
[:digit:] | Todos los dígitos. |
[:graph:] | Caracteres imprimibles, excluyendo el espacio. |
[:lower:] | Todas las letras minúsculas. |
[:print:] | Caracteres imprimibles, incluyendo el espacio. |
[:punct:] | Todos los caracteres de puntuación. |
[:space:] | Caracteres de espacio en blanco horizontal o vertical. |
[:upper:] | Todas las letras mayúsculas. |
[:xdigit:] | Dígitos hexadecimales. |
[=CHAR=] | Todos los caracteres equivalentes a CHAR. |
Nota: Otro gran editor de flujo de texto Unix es SED. La herramienta te permite buscar, reemplazar, agregar y eliminar líneas en un archivo de texto sin abrirlo en un editor de texto.
Opciones del comando tr
de Linux
Las opciones proporcionan acciones adicionales de transformación de caracteres. Las opciones disponibles son:
Opción | Descripción |
---|---|
-C | Complementa los caracteres en CONJUNTO1, incluyendo todos los caracteres en la salida excepto los especificados. |
-c | Complementa los valores en CONJUNTO1. Las operaciones se aplican a los caracteres que no están en el conjunto dado. |
-d | Elimina caracteres de la entrada CONJUNTO1. |
-s | Comprime caracteres repetidos especificados en el último operando (CONJUNTO1 o CONJUNTO2) y los reemplaza con una sola ocurrencia de ese carácter. |
-t | Trunca CONJUNTO1 a la longitud de CONJUNTO2. |
-u | Asegura que cualquier salida no esté almacenada en búfer. |
--help | Muestra el archivo de ayuda con todas las opciones disponibles. |
--version | Muestra la información de la versión del programa. |
Ejemplos de tr
de Linux
A continuación, se muestran ejemplos del uso del comando tr
con diferentes opciones para transformar el texto de entrada.
Cambiar el caso de los caracteres
Hay tres maneras de cambiar el caso de los caracteres con tr
:
- Especificar los caracteres exactos que desea convertir
Especifica qué caracteres de la entrada desea convertir. Esta opción cambia el caso de los caracteres o los caracteres completos, reemplazando los de CONJUNTO1 con los de CONJUNTO2.
Por ejemplo:
tr WWW www
Conversión de mayúsculas y minúsculas usando tr
.
WWW.adictosalinux.com
www.adictosalinux.com
- Especificar el rango de caracteres para la conversión
Especificar un rango permite a tr
cambiar el caso de cualquier carácter dentro de ese rango especificado. El siguiente ejemplo muestra cómo convertir caracteres en mayúsculas a minúsculas:
tr A-Z a-z
Convirtiendo mayúsculas y minúsculas usando rangos. Presiona CTRL+C para salir del modo de entrada.
HOLA
hola
BIENVENIDO A ADICTOSALINUX
bienvenido a adictosalinux
^C
- Especificar secuencias interpretadas
Coincidir y convertir caracteres especificando secuencias interpretadas. Por ejemplo, la secuencia para caracteres en minúsculas es [:lower:]
, y la secuencia para caracteres en mayúsculas es [:upper:]
. Especificar las dos secuencias instruye a tr
para que coincida y convierta el caso de los caracteres:
tr '[:upper:]' '[:lower:]'
EXAMPLE
example
^C
Convirtiendo mayúsculas y minúsculas usando secuencias. El ejemplo anterior muestra cómo tr
convierte caracteres en mayúsculas a minúsculas.
Eliminar caracteres repetidos
La opción -s
comprime los caracteres repetidos en una sola instancia de ese carácter. La opción es particularmente útil cuando se convierten espacios en blanco en tabulaciones o caracteres de nueva línea, y el texto de entrada contiene varios caracteres de espacio en blanco continuos.
Por ejemplo, la siguiente entrada contiene varios caracteres de espacio en blanco. Convertirlos en tabulaciones sin comprimir proporciona el siguiente resultado:
echo "Bienvenido a ADICTOSALINUX !" | tr '[:space:]' '\t'
Convirtiendo caracteres de espacio en blanco en tabulaciones usando el comando tr
.
Bienvenido a ADICTOSALINUX !
Para evitar varias tabulaciones y espacios en blanco en la salida, especifica la opción -s
:
echo "Bienvenido a ADICTOSALINUX !" | tr -s '[:space:]' '\t'
Comprimiendo varias instancias de un carácter en una sola.
Eliminar caracteres
Elimina caracteres específicos usando la opción -d
. En el siguiente ejemplo, tr
elimina cada instancia del carácter “e”:
"Bienvenido a ADICTOSALINUX!" | tr -d 'e'
Usando tr
para eliminar caracteres específicos.
Binvido a ADICTOSALINUX!
Opcionalmente, especifica un grupo de caracteres usando secuencias interpretadas. Por ejemplo, elimina todos los dígitos especificando la secuencia [:digit:]
:
echo "El código de acceso es: 2025" | tr -d [:digit:]
Eliminando un grupo de caracteres de un conjunto.
El código de acceso es:
Conjuntos complementarios
Usa la opción -c
para complementar los caracteres en CONJUNTO1. En el siguiente ejemplo, eliminamos todos los caracteres excepto los dígitos:
echo "Código ADICTOSALINUX: 8675309" | tr -cd [:digit:]
Complementando un conjunto usando tr
. Todos los caracteres que no están en el conjunto especificado (en este caso, todo excepto los dígitos) se eliminan.
8675309
Eliminar caracteres de nueva línea
Reduce el espacio que ocupa un texto convirtiendo los caracteres de nueva línea en espacios. El contenido aparece entonces en una sola línea.
En el siguiente ejemplo, usamos el comando cat para abrir un archivo de texto y enviarlo a través de una tubería a tr
para eliminar los caracteres de nueva línea:
cat archivo.txt
Hola
Hola
Bienvenido a ADICTOSALINUX
Este es el tutorial del comando tr.
Eliminando el carácter de nueva línea de un archivo con tr
.
cat archivo.txt | tr -d '\n'
Hola Hola Bienvenido a ADICTOSALINUX Este es el tutorial del comando tr.
Redireccionamiento a tr
Una alternativa a las tuberías es usar la redirección para alimentar contenido a tr
. Además, puedes usar la redirección para guardar la salida de tr
en un archivo.
El siguiente ejemplo muestra cómo eliminar todos los caracteres no imprimibles de un archivo cuyo contenido se redirige a tr
:
tr -cd [:print:] < archivo.txt
Redireccionando el contenido de un archivo a tr
.
HolaHolaBienvenido a ADICTOSALINUXEste es el tutorial del comando tr.
Truncar conjunto
Por defecto, si CONJUNTO1 es más largo que CONJUNTO2, tr
reutiliza el último carácter de CONJUNTO2 al procesar la entrada. Por ejemplo:
echo "ADICTOSALINUX" | tr ADICTOSA 12
Reemplazando caracteres usando el comando tr
. Como CONJUNTO1 es más largo que CONJUNTO2, tr
reutiliza el último carácter de CONJUNTO2, en este caso, “2”.
12222221L2NUX
Usa la opción -t
para truncar CONJUNTO1 a la longitud de CONJUNTO2:
echo "ADICTOSALINUX" | tr -t ADICTOSA 12
La opción -t
instruye a tr
para que trunque CONJUNTO1 a la longitud de CONJUNTO2 y solo reemplace los dos primeros caracteres.
12ICTOSALINUX
Nota: Aprende cómo truncar archivos en Linux.
Eliminar diacríticos
Usa la secuencia [=CHAR=]
para coincidir con todos los caracteres equivalentes al especificado. Por ejemplo, la secuencia puede identificar y eliminar diacríticos de los caracteres.
echo "Visitemos el café ADICTOSALINUX" | tr "[=e=]" "e"
Eliminar diacríticos de los caracteres usando tr
.
Visitemos el cafe ADICTOSALINUX
Imprimir cada palabra por separado
Imprime el contenido de un archivo línea por línea usando la opción -c
y reemplaza los caracteres no alfanuméricos con un carácter de nueva línea.
echo "Bienvenido a ADICTOSALINUX!" | tr -cs [:alnum:] '\n'
Imprimiendo cada palabra de un archivo por separado.
Bienvenido
a
ADICTOSALINUX
La salida ahora se muestra una palabra a la vez.
Guardar la salida en un archivo
Como tr
no cambia el contenido de un archivo directamente, tampoco guarda ningún cambio que realices. Guarda la salida en un archivo redirigiéndola como se muestra en el siguiente ejemplo:
tr -cd [:print:] < test.txt > limpio.txt
Abrir el nuevo archivo con cat
muestra que los cambios se han guardado.
cat limpio.txt
:
HolaHolaBienvenido aADICTOSALINUXEste es el tutorial del comando tr.
Conclusión
Este tutorial mostró cómo usar el comando tr
y sus opciones disponibles para varias transformaciones de texto. Consulta otras utilidades de texto de Linux en nuestras guías para el comando sort y el paginador de terminal less, o mira los mejores editores de texto de Linux.
¿Qué te parece?
Es bueno conocer tu opinión. Deja un comentario.