GNU/Linux >> Tutoriales Linux >  >> Linux

Usando el comando tr en Linux para jugar con personajes

El comando tr en Linux traduce un conjunto de caracteres a otro. Puede reemplazar un carácter o un conjunto de caracteres por otro carácter o conjunto de caracteres. tr lee la entrada de la entrada estándar y muestra la salida en la salida estándar. La entrada también se puede dar en un archivo o usando el comando echo.

tr es la abreviatura de traducir .

El formato estándar para el comando tr es:

$ tr [option] [char_set 1] [char_set 2]

Según las opciones especificadas, el comando tr reemplaza el conjunto de caracteres en "conjunto 1" por "conjunto 2".

Reemplazo de caracteres

Para reemplazar caracteres usando el comando tr, simplemente mencione los caracteres que se reemplazarán en el primer grupo y los caracteres que se colocarán en su lugar después de reemplazarlos en el segundo grupo.

$ tr 'a' '1'

Este comando esperará la entrada de STDIN. Después de obtener la entrada, la salida en la pantalla aparecerá con todas las instancias de 'a' reemplazadas por '1'.

1. Usando echo con el comando tr

El ejemplo anterior lee la entrada de STDIN. El comando Echo puede proporcionar información junto con el comando tr. Use el operador Pipe(|) para ejecutar los comandos juntos.

$  echo "apples and bananas" | tr 'a' '1'

2. Tomando entrada de un archivo

tr también puede tomar su entrada de un archivo. Esto es útil cuando la traducción se va a realizar sobre una colección voluminosa de texto. El operador de redirección (<) se usa para dar entrada desde un archivo.

$ tr 'a' '1' < input.txt

input.txt contiene el mismo texto que el ejemplo anterior.

Para guardar el texto en un archivo, use el operador de redirección (>) para redirigir la salida a un archivo.

$ tr 'a' '1' < input.txt > output.txt

Cambiar el caso del texto con el comando tr

Uno de los usos más comunes del comando tr es traducir texto de minúsculas a mayúsculas o viceversa.

Como tr funciona en conjuntos de caracteres, podemos mencionar explícitamente el conjunto de caracteres en minúsculas como conjunto 1 y el conjunto de caracteres en mayúsculas como conjunto 2 para hacer el cambio.

$ echo "apples and bananas" | tr a-z A-Z

Establecer a-z representa el conjunto de letras minúsculas y el conjunto A-Z representa el conjunto de letras mayúsculas.

Otra forma de hacer lo mismo es:

$ echo "apples and bananas" | tr [:lower:] [:upper:]

Aquí, [:inferior:] representa el conjunto de letras minúsculas y [:upper:] representa el conjunto de letras mayúsculas.

Eliminar caracteres con tr

tr tiene la capacidad de eliminar un conjunto de caracteres del texto. Esto se logra usando tr junto con -d comando.

$  echo "apples and bananas" | tr -d 'n'

Este comando eliminará todas las apariciones de ‘n’ en el texto.

Para eliminar las apariciones de varios caracteres, mencione todos los caracteres entre comillas simples.

$  echo "apples and bananas" | tr -d 'na'

Este comando eliminará las apariciones de ‘n’ y 'a'

Dado que tr funciona a nivel de carácter, todas las apariciones individuales de ‘n’ y 'a' son removidos. Es fácil equivocarse y pensar que el comando solo eliminará las apariciones de 'na' ocurriendo en esa secuencia. Sin embargo, ese no es el caso.

Comprime varias ocurrencias en una

Comprimir múltiples ocurrencias en una puede ser útil para comprimir el texto. A menudo se usa para eliminar instancias de múltiples espacios entre líneas.

-s la opción se usa con tr para apretar.

$ echo "apples and bananas" | tr -s 'p'

Las apariciones múltiples de 'p' en Apple se han reducido a una sola aparición.

$  echo "apples and bananas" | tr -s 'na' '1'

La salida de este comando es equivalente a la de reemplazar primero las apariciones de los caracteres ‘n’ y 'a ' con '1' , seguido de una operación de compresión. Para comparar, mire el segundo comando en la salida. El resultado del segundo comando es una simple sustitución de caracteres.

Exprimamos todos los 1 en la salida del segundo comando para ver si obtenemos la misma salida que el primero.

Obtenemos el mismo resultado que el primer comando en la salida.

Para eliminar espacios en blanco consecutivos en el uso de texto:

$  echo "apples    and    bananas" | tr -s " " 

Alternativamente [:espacio:] se puede usar en lugar de ” “

$ echo "apples    and    bananas" | tr -s [:space:]

Extracción de dígitos del texto

Para lograr operaciones en las que solo se necesita conservar un conjunto particular de caracteres. Es mejor usar -c opción. -c se utiliza para complementar el conjunto.

Complemento de un conjunto significa todo lo demás además de lo que hay en ese conjunto.

$ echo " Home : 011 1234 4321" | tr -cd [:digit:],'\n' 

Mencionar ‘\n’ (nueva línea) es importante ya que, de lo contrario, la salida no tiene una nueva línea y se mezcla con la siguiente línea en la terminal. Otra razón para no ignorar las líneas nuevas al eliminar caracteres es que su archivo podría tener varios dígitos en varias líneas. Si se elimina el carácter de nueva línea, todos los números aparecerán juntos sin ningún espacio.

Extracción de palabras del texto

Este proceso es exactamente lo contrario del realizado anteriormente. Aquí ignoraremos los dígitos y nos concentraremos solo en palabras formadas por letras.

$ echo " Home : 011 1234 4321" | tr -d [:digit:]

En este ejemplo, simplemente hemos eliminado todos los dígitos del texto.

Una forma más controlada de hacer lo mismo sería a través del complemento.

$ echo " Home : 011 1234 4321" | tr -cd [:alpha:],'\n'

[:alfa:] representa el conjunto de alfabetos. Piense en ello como una colección de los dos conjuntos, inferior y superior.

[:alpha:] = [:lower:] + [:upper:]

Contar el número de ocurrencias de palabras

Contar cuántas veces aparece una palabra en un texto puede ser útil para construir histogramas. También es muy útil en la construcción de modelos probabilísticos para la detección de correo no deseado.

Primero, creemos un archivo con algunas palabras recurrentes.

A veces puede ser útil mostrar cada palabra del texto en una nueva línea.

$ tr -cs "[:alpha:]" "\n" < input.txt

Para obtener el número de ocurrencias de cada palabra, use:

$ tr -cs "[:alpha:]" "\n" < input.txt | sort | uniq -c

Ordenar se utiliza para ordenar la lista lexicográficamente. uniq-c cuenta las apariciones individuales de cada palabra y muestra el resultado como una lista de palabras con un conteo.

Conclusión

El comando tr es útil para realizar traducciones basadas en caracteres. Cuando se combina con otros comandos como sort o uniq, el comando tr puede resultar muy poderoso. Lea más sobre el comando tr en su página man. Al aplicar transformaciones sobre una línea completa, se puede usar el comando sed.


Linux
  1. Programación de tareas con el comando cron de Linux

  2. Diagnosticar problemas de conectividad con el comando ping de Linux

  3. Ver comandos y tareas con el comando watch de Linux

  4. Programar una tarea con Linux al mando

  5. Usando la fuerza en la línea de comando de Linux

Usando el comando GREP en Linux con ejemplos

Cómo encontrar archivos con el comando fd en Linux

Tutorial sobre el uso del comando Timeout en Linux

Tutorial sobre el uso del último comando en la terminal de Linux

Programar trabajos en Linux con el comando 'at'

Comando tr de Linux con ejemplos