Comando tr de Linux: Traducción de caracteres

LinuxLinuxBeginner
Practicar Ahora

💡 Este tutorial está traducido por IA desde la versión en inglés. Para ver la versión original, puedes hacer clic aquí

Introducción

En este laboratorio, exploraremos el comando tr en Linux, una utilidad versátil para transformar texto a nivel de caracteres. El comando tr, abreviatura de "translate" (traducir), se utiliza ampliamente para tareas como convertir mayúsculas y minúsculas, eliminar caracteres específicos y realizar limpieza básica de datos. Al final de este laboratorio, estarás capacitado para utilizar tr en diversos escenarios de manipulación de texto. Este laboratorio está diseñado para principiantes, así que no te preocupes si eres nuevo en los comandos de Linux; te guiaremos paso a paso con cuidado.


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL linux(("Linux")) -.-> linux/BasicSystemCommandsGroup(["Basic System Commands"]) linux(("Linux")) -.-> linux/BasicFileOperationsGroup(["Basic File Operations"]) linux(("Linux")) -.-> linux/TextProcessingGroup(["Text Processing"]) linux/BasicSystemCommandsGroup -.-> linux/echo("Text Display") linux/BasicFileOperationsGroup -.-> linux/cat("File Concatenating") linux/TextProcessingGroup -.-> linux/tr("Character Translating") subgraph Lab Skills linux/echo -.-> lab-219198{{"Comando tr de Linux: Traducción de caracteres"}} linux/cat -.-> lab-219198{{"Comando tr de Linux: Traducción de caracteres"}} linux/tr -.-> lab-219198{{"Comando tr de Linux: Traducción de caracteres"}} end

Comprender los conceptos básicos de tr

Comencemos por entender la sintaxis básica del comando tr:

tr [OPCIÓN]... CONJUNTO1 [CONJUNTO2]

El comando tr lee texto desde la entrada estándar (stdin), lo transforma de acuerdo con las opciones y conjuntos de caracteres especificados, y escribe el resultado en la salida estándar (stdout).

Comencemos con un ejemplo sencillo. Crearemos un archivo llamado greeting.txt con un mensaje de saludo básico y luego usaremos tr para convertir todas las letras minúsculas en mayúsculas.

Primero, crea el archivo:

echo "hello, world" > ~/project/greeting.txt

Consejo: Puedes copiar y pegar los comandos de creación de archivos en la terminal para crear los archivos correctamente.

Este comando crea un nuevo archivo llamado greeting.txt en tu directorio de proyecto (~/project/) con el contenido "hello, world".

Ahora, usemos tr para convertir todas las letras minúsculas en mayúsculas:

cat ~/project/greeting.txt | tr 'a-z' 'A-Z'

Deberías ver la siguiente salida:

HELLO, WORLD

Desglosemos este comando:

  1. cat ~/project/greeting.txt: Esto lee el contenido del archivo.
  2. |: Este es un símbolo de tubería (pipe). Toma la salida del comando de su izquierda y la pasa como entrada al comando de su derecha.
  3. tr 'a-z' 'A-Z': Este es nuestro comando tr. Traduce cada carácter del primer conjunto ('a-z', que representa todas las letras minúsculas) al carácter correspondiente en el segundo conjunto ('A-Z', que representa todas las letras mayúsculas).

Ten en cuenta que este comando no modifica el archivo original. Si quieres guardar el texto transformado, necesitarías redirigir la salida a un nuevo archivo.

Eliminando caracteres con tr

El comando tr también puede eliminar caracteres específicos de la entrada. Esto es especialmente útil cuando necesitas limpiar texto eliminando caracteres no deseados. Creemos un archivo con alguna puntuación y luego eliminémosla.

Primero, crea un archivo con puntuación:

echo "Hello, World! How are you?" > ~/project/punctuated.txt

Consejo: Puedes copiar y pegar los comandos de creación de archivos en la terminal para crear los archivos correctamente.

Ahora, usemos tr para eliminar toda la puntuación:

cat ~/project/punctuated.txt | tr -d '[:punct:]'

Deberías ver:

Hello World How are you

Desglosemos este comando:

  1. cat ~/project/punctuated.txt: Esto lee el contenido del archivo.
  2. |: Esto canaliza (pipe) la salida al comando tr.
  3. tr -d '[:punct:]':
    • La opción -d le dice a tr que elimine los caracteres especificados.
    • [:punct:] es una clase de caracteres que representa todos los caracteres de puntuación. Las clases de caracteres son conjuntos predefinidos de caracteres que facilitan la especificación de grupos de caracteres.

Este comando elimina todos los caracteres de puntuación del texto, dejando solo letras, números y espacios.

Traduciendo múltiples caracteres

Ahora exploremos una traducción más compleja. Crearemos un archivo con texto codificado y usaremos tr para decodificarlo. Este ejemplo demuestra cómo se puede usar tr para cifrado y descifrado simples.

Primero, crea un archivo con texto codificado:

echo "Tijt jt b tfdsfu nfttbhf." > ~/project/encoded.txt

Consejo: Puedes copiar y pegar los comandos de creación de archivos en la terminal para crear los archivos correctamente.

Ahora, descifremoslo:

cat ~/project/encoded.txt | tr 'b-za-a' 'a-z'

Deberías ver:

This is a secret message.

Desglosemos este comando:

  1. cat ~/project/encoded.txt: Esto lee el contenido del archivo codificado.
  2. |: Esto canaliza (pipe) la salida al comando tr.
  3. tr 'b-za-a' 'a-z':
    • El primer conjunto, 'b-za-a', representa un alfabeto desplazado donde 'b' se trata como 'a', 'c' como 'b', y así sucesivamente, con 'a' volviendo a 'z'.
    • El segundo conjunto, 'a-z', es el alfabeto normal.
    • Esto efectivamente desplaza cada letra de la entrada una posición hacia atrás en el alfabeto.

Este tipo de sustitución es una forma muy simple de cifrado llamada cifrado César. Si bien no es seguro para uso en el mundo real, es un gran ejemplo de cómo se puede usar tr para sustitución carácter por carácter.

Usando clases de caracteres con tr

El comando tr admite varias clases de caracteres, que son conjuntos predefinidos de caracteres. Estas pueden ser muy útiles para transformaciones de texto más complejas. Usemos algunas de ellas en un escenario práctico.

Primero, crea un archivo con contenido mixto:

echo "User123 logged in at 09:45 AM on 2023-08-15" > ~/project/log_entry.txt

Consejo: Puedes copiar y pegar los comandos de creación de archivos en la terminal para crear los archivos correctamente.

Ahora, extraigamos solo los dígitos de esta entrada de registro:

cat ~/project/log_entry.txt | tr -cd '[:digit:]'

Deberías ver:

12309452023815

Desglosemos este comando:

  1. cat ~/project/log_entry.txt: Esto lee el contenido del archivo de registro.
  2. |: Esto canaliza (pipe) la salida al comando tr.
  3. tr -cd '[:digit:]':
    • La opción -c complementa el conjunto (lo que significa "no en este conjunto").
    • La opción -d elimina los caracteres especificados.
    • [:digit:] es una clase de caracteres que representa todos los dígitos (0 - 9).
    • Juntas, -cd '[:digit:]' significa "eliminar todos los caracteres que no son dígitos".

Este comando es útil para extraer datos numéricos de texto mixto, lo que puede ser útil en tareas de análisis de registros o limpieza de datos.

Reduciendo repeticiones con tr

El comando tr también puede "reducir" los caracteres repetidos a una sola aparición. Esto es útil para limpiar datos con repeticiones innecesarias. Creemos un archivo con algunos caracteres repetidos y luego lo limpiemos.

Primero, crea un archivo con espacios repetidos:

echo "This    is    a    test    with    extra    spaces." > ~/project/spaced.txt

Consejo: Puedes copiar y pegar los comandos de creación de archivos en la terminal para crear los archivos correctamente.

Ahora, usemos tr para reducir los espacios repetidos:

cat ~/project/spaced.txt | tr -s ' '

Deberías ver:

This is a test with extra spaces.

Desglosemos este comando:

  1. cat ~/project/spaced.txt: Esto lee el contenido del archivo con espacios adicionales.
  2. |: Esto canaliza (pipe) la salida al comando tr.
  3. tr -s ' ':
    • La opción -s reduce las repeticiones del carácter especificado a una sola aparición.
    • ' ' especifica que queremos reducir los caracteres de espacio.

Este comando es especialmente útil cuando se trata de datos mal formateados o cuando se necesita normalizar los espacios en blanco en un archivo de texto.

Resumen

En este laboratorio, exploramos el versátil comando tr en Linux. Aprendimos cómo:

  1. Convertir el caso del texto
  2. Eliminar caracteres específicos
  3. Traducir múltiples caracteres
  4. Usar clases de caracteres
  5. Reducir caracteres repetidos

El comando tr es una herramienta poderosa para la manipulación de texto. Aquí hay algunas opciones adicionales que no cubrimos en detalle:

  • -c: Complementar el conjunto de caracteres en string1, es decir, operar en todos los caracteres que no estén en string1
  • -t: Truncar string1 a la longitud de string2

Para tareas de procesamiento de texto más avanzadas, es posible que desees explorar otros comandos como sed y awk en futuros laboratorios.

Recursos