LINUX

Comando Tr en Linux con ejemplos

comando tr en linux

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?
conversión de caso de comando tr

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.

Publicaciones relacionadas

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Botón volver arriba
Cerrar