Comando Tr en Linux con ejemplos


El comando tr (translate) se usa en Linux principalmente para traducir y eliminar caracteres. Puede usarse para convertir mayúsculas a minúsculas, apretar caracteres repetidos y borrar caracteres.
El comando Tr requiere dos conjuntos de caracteres para las transformaciones y también se puede usar con otros comandos usando tuberías Unix para traducciones avanzadas.
En este tutorial, aprendemos cómo usar el comando tr en los sistemas operativos Linux a través de algunos ejemplos.
comando tr y sintaxis
El comando Tr usa la siguiente sintaxis que requiere dos conjuntos de caracteres para actuar.
tr [options] "SET1" "SET2"
donde los SET son un grupo de personajes. Utiliza secuencias interpretadas, enumeró algunas de ellas.
NNN
-> carácter con valor octal NNN (1 a 3 dígitos octales)
-> barra invertida
n
-> nueva línea
r
-> volver
t
-> pestaña horizontal
[:alnum:]
-> todas las letras y dígitos
[:alpha:]
-> todas las letras
[:blank:]
-> todos los espacios en blanco horizontales
[:cntrl:]
-> todos los personajes de control
[:digit:]
-> todos los dígitos
[:lower:]
-> todas las letras minúsculas
[:upper:]
-> todas las letras mayúsculas
Se pueden aplicar las siguientes variaciones de la sintaxis tr:
echo "something to translate" | tr "SET1" "SET2"
tr "SET1" "SET2" < file-to-translate
tr "SET1" "SET2" < file-to-translate > file-output
Las opciones de Tr son:
-c
, -C
, --complement
-> Complementa el juego de caracteres en ‘SET1 «-d
, --delete
-> Eliminar caracteres en SET1.-s
, --squeeze-repeats
-> Reemplace cada secuencia de entrada de un carácter repetido que se enumera en SET1 con una sola aparición de ese carácter.
1) Convertir minúsculas a mayúsculas
Podemos usar tr para la conversión de mayúsculas y minúsculas, es decir, para convertir oraciones o palabras de minúsculas a mayúsculas o viceversa.
Tu también puedes [:lower:] [:upper:]
o "a-z" "A-Z"
para convertir minúsculas en mayúsculas.
Los siguientes ejemplos convierten los caracteres de minúsculas a mayúsculas e imprimen los resultados en la salida estándar.
$ sudo echo "change me to capital letter" | tr [:lower:] [:upper:] CHANGE ME TO CAPITAL LETTER
Este ejemplo traduce el contenido de un archivo llamado ‘input.txt’ e imprime el resultado solo en la salida estándar de la consola.
$ sudo cat input.txt Can you see how command can be wonderful? $ sudo tr "a-z" "A-Z" < input.txt CAN YOU SEE HOW COMMAND CAN BE WONDERFUL? $ sudo cat input.txt Can you see how command can be wonderful?
A continuación, el contenido de ‘input.txt’ se convertirá a mayúsculas y se guardará en un archivo llamado ‘output.txt’
$ sudo tr "a-z" "A-Z" < input.txt > output.txt $ sudo cat output.txt CAN YOU SEE HOW COMMAND CAN BE WONDERFUL?

Nota: El comando sed tiene la y
opción que funciona como tr, que reemplaza todas las apariciones de caracteres en ‘set1’ con los caracteres correspondientes en ‘set2’.
2) Elimina personajes
los -d
La opción se utiliza para eliminar todas las apariciones de caracteres que se han especificado. Comprobemos diferente -d
opciones con ejemplos.
El siguiente comando eliminará todas las apariciones de caracteres ‘cawe’ del primer conjunto.
$ sudo echo "Can you see how command can be wonderful?" | tr -d "cawe?" Cn you s ho ommnd n b ondrful
El siguiente comando eliminará todos los dígitos de una oración:
Nota [:digit:]
representa todos los caracteres de dígitos.
$ sudo echo "Remove my id number 567893" | tr -d [:digit:]
Producción
Remove my id number
El siguiente comando eliminará las nuevas líneas de un archivo de texto
$ sudo tr -d 'n' < file1.txt or $ sudo tr -d ' 12' < file1.txt
3) Eliminar caracteres que no coincidan (complemento)
Con -c
opción puede reemplazar los caracteres que no coinciden con otro conjunto de caracteres.
En el siguiente ejemplo, reemplaza todos los caracteres que no coinciden ‘bc123d56E’ con ‘t’.
$ sudo echo "Abc123d56E" | tr -c 'A' 't' Atttttttttt
Otro ejemplo en tiempo real en el que queremos extraer solo dígitos de un conjunto de caracteres:
$ echo "My year of birth is 1975" | tr -cd [:digit:]
Output 1975
4) Traducir espacios en blanco a pestañas
Podemos tener el comando tr para traducir todos los espacios en blanco a pestañas, aplicar tr con [:space:]
y t
.
Mira el siguiente ejemplo
$ sudo echo "I need more space" | tr [:space:] 't'
Output I need more space
5) Apriete la repetición de caracteres
Con -s
opción podemos exprimir la aparición repetida de caracteres.
En los siguientes ejemplos, los espacios repetidos (continuos) se convierten en un solo espacio.
$ sudo echo "I am so wide" | tr -s " " I am so wide
o
$ sudo echo "I am so wide" | tr -s '[:space:]' "https://linoxide.com/how-tos/linux-tr-command/#" I am so wide
Aquí eliminamos los espacios continuos y colocamos el carácter «https://linoxide.com/how-tos/linux-tr-command/#» en todos los espacios individuales.
sudo echo "I am so wide" | tr -s '[:space:]' "https://linoxide.com/how-tos/linux-tr-command/#" I#am#so#wide#
6) Se traduce a una sola nueva línea
A continuación, se traduce cada secuencia de espacio en un solo carácter de nueva línea.
Nota [:alpha:]
representa todas las letras.
$ sudo cat file Can you see how command can be wonderful $ sudo cat file | tr -s "[:alpha:]" "n" Can you see how command can be wonderful $
7) Genere una lista de palabras únicas a partir de un archivo
Este es un ejemplo práctico muy útil en el que podemos usar tr para generar palabras únicas a partir de un archivo.
$ sudo cat file unique1 unique1 unique2 unique3 unique4 unique4 $sudo cat file | tr -cs "[:alnum:]" "n" | sort | uniq -c | sort -rn 2 unique4 2 unique1 1 unique3 1 unique2 $
8) Codificar letras usando ROT
ROT (Caesar Cipher) es un tipo de criptografía en el que la codificación se realiza moviendo las letras del alfabeto a la siguiente letra.
Veamos cómo usar tr para encriptar.
En el siguiente ejemplo, cada carácter del primer conjunto será reemplazado por el carácter correspondiente del segundo conjunto.
El primer conjunto especificado es [a-z], lo que significa abcdefghijklmnopqrstuvwxyz
. El segundo es [n-za-m], que se convierte en pqrstuvwxyzabcdefghijklmn
.
tr 'a-z' 'p-za-n'
Comando simple para mostrar la teoría anterior:
$ sudo echo 'abg' | tr 'ab' 'ef' Output efg
Esto es muy útil cuando necesita cifrar un correo electrónico. Compruebe a continuación
$ sudo echo 'cryptography@example.com' | tr 'A-Za-z' 'N-ZA-Mn-za-m'
Producción
pelcgbtencul@rknzcyr.pbz
Conclusión
Es un comando de Linux muy poderoso cuando se usan tuberías de Unix y se usa muy comúnmente en el script de shell.
Siempre puedes referir página man para obtener más información sobre esta utilidad de línea de comandos. Si tiene alguna pregunta o comentario, no dude en dejar un comentario.