A partir de la descripción oficial, es fácil comprender el valor de esta herramienta. Linux presenta una gran colección de herramientas integradas. Hay algunos especiales que son muy útiles para la manipulación de texto. Ya hemos cubierto varios de ellos, como Vim, Nano, awk, sed y otras herramientas.
Aquellos que trabajan con textos de forma regular, "tr" definitivamente será muy, muy útil. Este artículo ilustrará el uso más común de "tr" con suficientes ejemplos.
Nota: El tutorial utilizará una tonelada de archivos ficticios con contenido aleatorio. Todas las cadenas aleatorias son generadas por Aleatorio.org.
Localización
cual tr
Esta es la ruta completa de la herramienta de comando "tr".
Uso básico
Para usar la herramienta "tr", debe usar la siguiente estructura de comando.
trHay diferentes opciones y formas de manipular los textos usando "tr". Primero, echemos un vistazo a este archivo de demostración.
demostración de gato.TXT
Todos los caracteres están en minúsculas, a la derecha? Transformémoslos a mayúsculas!
demostración de gato.txt | tr [: inferior:] [: superior:]
Aquí, el primer parámetro de "tr" indica realizar una traducción en todos los caracteres en minúscula de la entrada. La segunda parte dice que los transforme en mayúsculas en la salida.
Ahora, hagamos lo contrario.
demo de gato1.TXTdemo1 gato.txt | tr [: superior:] [: inferior:]
También hay otra forma de realizar esta misma tarea. Vamos a ver.
demostración de gato.txt | tr [a-z] [A-Z]
Ahora, en lugar de decirle a "tr" que traduzca mayúscula a minúscula o de minúscula a mayúscula, le dijimos que identificara las entradas que coincidan con el rango "a" a "z" y que traduzca a su equivalente del rango "A" a "Z".
Este método similar también se puede utilizar para traducir mayúsculas a minúsculas.
demo de gato1.txt | tr [A-Z] [a-z]
Jugando con numeros
Vimos cómo traducir mayúsculas a minúsculas, a la derecha? Es hora de jugar con los dígitos.
Usando el siguiente comando, podemos traducir fácilmente todos los dígitos (0-9) a sus caracteres equivalentes!
gato demo_digit.TXTgato demo_digit.txt | tr [0-9] [a-z]
Impresionante! ¿Qué hay de las mayúsculas??
gato demo_digit.txt | tr [0-9] [A-Z]
Simple, pero interesante, ¿verdad?? También podemos transformar caracteres en dígitos!
gato demo_lowercase.TXTgato demo_lowercase.txt | tr [a-z] [0-9]
Uh oh, parece que las cosas se rompieron, ¿verdad?? Bueno, solo podemos usar 'a' a 'j' para representar un solo dígito. Si hay algún carácter fuera de este límite, "tr" reemplazará el carácter con ']'.
Eliminando personajes
Como sugiere la descripción oficial, "tr" puede hacer más que la simple traducción de caracteres. En el siguiente ejemplo, veremos cómo usar "tr" para eliminar ciertos caracteres.
gato al azar.TXT
Ahora, eliminemos todos los números del contenido.
gato al azar.txt | tr -d [0-9]
Aquí, la bandera "-d" es para decirle a "tr" que elimine y [0-9] denota dígitos para eliminar.
También podemos hacer eso con los personajes. El siguiente comando mantendrá todos los números pero eliminará todos los caracteres.
gato al azar.txt | tr -d [a-z]
¿Qué tal eliminar solo un carácter específico del archivo??
gato demo_lowercase.TXTgato demo_lowercase.txt | tr -d 'y'
Eliminó todas las entradas 'y' del archivo.
Exprimiendo caracteres repetidos
Hay ocasiones en las que un personaje se repite secuencialmente. Si está lidiando con problemas tan molestos, deje que "tr" se encargue de ello! Usando el siguiente comando, puede apretar tales ocurrencias. Básicamente, mantiene la aparición inicial del personaje y elimina las adicionales.
Primero, es hora de comprobar cómo se ve el archivo de demostración.
gato duplicado.TXT
Ahora, pase el contenido a "tr".
gato duplicado.txt | tr -s [: dígitos:]
Aquí, el parámetro "-s" es el indicador para realizar la acción "apretar".
Romper / fusionar oraciones
Echemos un vistazo al archivo de demostración.
murciélago duplicado.TXT
Contiene una oración con espacios que dividen las palabras, a la derecha? Dividamos las palabras en nuevas líneas.
gato duplicado.txt | tr "" "\ n"
Este comando reemplazó todos los caracteres de espacio con caracteres de nueva línea.
Combinemos la oración rota en una oración larga nuevamente.
murciélago duplicado.TXTgato duplicado.txt | tr "\ n" ""
Traduciendo personajes
Al igual que traducimos los caracteres antes, esta vez haremos lo mismo pero con un solo carácter.
demostración de gato.TXT
En este archivo, cambiemos todos los caracteres de nueva línea a un punto y coma.
demostración de gato.txt | tr "\ n" ";"
Tuve que envolverlo alrededor de "eco". De lo contrario, crearía algún resultado porque el último carácter de nueva línea también se traduciría en un punto y coma.
Hay una forma diferente de cambiar de personaje. Sin embargo, este es más difícil de controlar.
gato duplicado1.TXTgato duplicado1.txt | tr -c 'd' 'z'
gato duplicado1.txt | tr -c 'd' 'z'
Guau! Vamos a envolverlo en "eco" para comprender mejor el resultado.
echo $ (gato duplicado1.txt | tr -c 'd' 'z')
Que pasó aquí? Usando la bandera "-c", "tr" solo mantendrá el carácter objetivo sin cambios. En el caso de que no coincidan, todos los demás personajes se transformarán. Aquí, cualquier carácter que no sea 'b' fue reemplazado por 'z'.
Traducir cadenas
"Tr" también puede funcionar con cadenas. Realicemos el reemplazo de cuerdas.
gato duplicado1.TXTgato duplicado1.txt | tr "duplicar" "not_duplicate"
Mi cadena para reemplazar es más corta que la cadena por la que se reemplazará, por lo que no encajó.
Conjuntos de caracteres
A estas alturas, habrá notado que hay varios conjuntos de caracteres compatibles con "tr". Si bien algunos de ellos se usaron en los ejemplos anteriores, otros conjuntos de caracteres también son bastante útiles. Aquí hay una lista de todas las listas de personajes compatibles.
Conjuntos de caracteres POSIX
- [: dígito:]: dígitos 0-9
- [: alpha:]: alfabetos a-z y A-Z.
- [: alnum:]: Caracteres alfanuméricos
- [: punt:]: símbolos de puntuación
- [: espacio:]: cualquier carácter de espacio en blanco, por ejemplo, espacio, tabulación, FF, CR, NL, FF, etc.
- [: upper:]: todos los alfabetos en mayúsculas
- [: lower:]: todos los alfabetos en minúscula
- [: cntrl:]: todos los caracteres de control (NL, CR, EXT, STX, ACK, SO, DC1, DC2, NAK, ETB, ESC, IS1, IS2, DEL, etc.)
Conjuntos de caracteres adicionales
- [A-Z]: todos los alfabetos en mayúsculas
- [a-z]: todos los alfabetos en minúsculas
- [0-9]: todos los dígitos
Pensamientos finales
Hay muchas formas en que todas estas características de "tr" pueden beneficiar a los usuarios. Siempre recomiendo consultar todas las opciones disponibles y las guías detalladas sobre cualquier herramienta de Linux en sus páginas de manual, información y ayuda, ya que pueden ofrecer un conocimiento más valioso.
tr --ayudahombre tr
info tr
Disfrutar!