Linux / Comando tr: sustituir, eliminar y comprimir caracteres
tr reemplaza o elimina caracteres que se ingresan a través de la entrada estándar y comprime caracteres repetidos. Primero recuerde que no toma el nombre del archivo como argumento directamente.
tr es un filtro a nivel de caracteres. Para encontrar patrones de cadenas y reemplazarlos según el contexto, sed es adecuado. La interpretación del rango de caracteres puede verse afectada por la configuración regional, así que en los scripts verifique el conjunto de caracteres de entrada.
Sintaxis básica
tr [opciones] conjunto1 [conjunto2] < archivo_de_entrada
La implementación instalada y las opciones pueden variar según la distribución. Verifique la descripción de man tr en el sistema actual.
Ejemplos de uso
De minúsculas a mayúsculas
Pase la entrada a través de una tubería y muestre el resultado en la pantalla.
printf '%s\n' hello | tr '[:lower:]' '[:upper:]'
Eliminar caracteres específicos
-d elimina caracteres que pertenecen al conjunto de caracteres especificado.
tr -d '\r' < windows-lines.txt
Compresión de espacios repetidos
Reduce los caracteres de espacio consecutivos a uno solo. Para unificar tabulaciones y espacios en un solo tipo, se requiere un reemplazo separado.
tr -s ' ' < notes.txt
Resultado de conversión por unidad de carácter
tr reemplaza o elimina caracteres de la entrada estándar uno por uno. A continuación se muestra un ejemplo de cómo convertir letras mayúsculas en minúsculas.
printf 'HELLO 123\n' | tr '[:upper:]' '[:lower:]'
Ejemplo de salida:
hello 123
Los números y los espacios no se someten a conversión, por lo que permanecen igual. Como tr no tiene argumentos de ruta de archivo, cuando se procesan archivos se redirige como tr ... < entrada > salida. Para reemplazos complejos de caracteres multibyte o reemplazos de palabras/expresiones regulares, sed u otras herramientas de procesamiento de texto son más adecuadas.
Opciones y formatos principales
| Opciones·Formato | Descripción |
|---|---|
-d |
Elimina los caracteres correspondientes al conjunto 1. |
-s |
Comprime los caracteres correspondientes repetidos en uno. |
-c |
Selecciona los caracteres que no pertenecen al conjunto 1. |
[:lower:] / [:upper:] |
Representa conjuntos de minúsculas y mayúsculas con una clase de caracteres. |
Precauciones al usar
No cambia el archivo de entrada. tr ... < file > file puede hacer que la shell vacíe el archivo primero, así que use un archivo de salida separado. El conjunto de tr no es toda la expresión regular, y para el procesamiento multibyte UTF-8 se deben verificar las limitaciones de implementación y de localización.
Preguntas frecuentes
¿Se puede pasar un nombre de archivo como argumento a tr?
No. El contenido del archivo debe proporcionarse a través de la entrada estándar, como tr ... < archivo.txt.
Documentación oficial
Puede consultar el comportamiento exacto de las opciones y las diferencias según la implementación en la documentación oficial de tr.




