Reducir caracteres con tr
Otra característica útil del comando tr es su capacidad para "comprimir" caracteres repetidos, reemplazando ocurrencias consecutivas del mismo carácter por una única instancia. Esta funcionalidad es especialmente valiosa cuando se trabaja con texto que contiene excesivos espacios en blanco u otros caracteres repetidos.
La opción de compresión en tr
Para comprimir caracteres repetidos utilizando el comando tr, se utiliza la opción -s seguida del conjunto de caracteres que se desea comprimir:
tr -s SET1
Donde SET1 es el conjunto de caracteres que se desea comprimir.
Crear un archivo de texto de muestra con excesivos espacios en blanco
Creemos un archivo de muestra con excesivos espacios en blanco para practicar:
echo 'Error: Too much whitespace.' > ~/project/whitespace.txt
Este comando crea un archivo llamado whitespace.txt en el directorio /home/labex/project con texto que incluye múltiples espacios consecutivos.
Comprimir espacios en el texto
Ahora, usemos el comando tr con la opción -s para comprimir múltiples espacios en un solo espacio:
tr -s ' ' < ~/project/whitespace.txt
Cuando ejecutes este comando, deberías ver la siguiente salida:
Error: Too much whitespace.
Observa que los múltiples espacios entre palabras se han reducido a un solo espacio, lo que hace el texto más legible.
Comprender el comando
Analicemos lo que sucedió:
tr -s ' ' instruye al comando a comprimir las ocurrencias repetidas de un carácter de espacio en un solo espacio.
- El símbolo
< redirige el contenido de ~/project/whitespace.txt como entrada al comando tr.
- El resultado se muestra en la terminal pero no se guarda en el archivo.
Guardar la salida en un nuevo archivo
Si deseas guardar el texto con espacios comprimidos en un nuevo archivo, puedes usar la redirección de salida:
tr -s ' ' < ~/project/whitespace.txt > ~/project/clean_whitespace.txt
Para verificar el contenido del nuevo archivo, usa el comando cat:
cat ~/project/clean_whitespace.txt
Deberías ver:
Error: Too much whitespace.
Combinar operaciones de tr
El comando tr te permite combinar operaciones. Por ejemplo, puedes traducir caracteres y comprimirlos en un solo comando:
tr 'a-z' 'A-Z' -s ' ' < ~/project/whitespace.txt
Este comando convertirá todas las letras minúsculas en mayúsculas y también comprimirá múltiples espacios en un solo espacio.
Crear un ejemplo más complejo
Creemos un ejemplo más complejo para practicar:
echo 'log entry: error code 404 not found' > ~/project/complex.txt
Ahora, usemos tr para convertir todas las letras en mayúsculas y comprimir los espacios:
tr 'a-z' 'A-Z' -s ' ' < ~/project/complex.txt > ~/project/processed_complex.txt
Para ver el resultado:
cat ~/project/processed_complex.txt
Deberías ver:
LOG ENTRY: ERROR CODE 404 NOT FOUND
Ahora has aprendido cómo usar el comando tr para comprimir caracteres repetidos en texto. Esto, combinado con las capacidades de traducción y eliminación que aprendiste anteriormente, te da un potente conjunto de herramientas para la manipulación de texto en Linux.