Androide

Comando tr en linux con ejemplos

comando tr linux parte segunda

comando tr linux parte segunda

Tabla de contenido:

Anonim

tr es una utilidad de línea de comandos en sistemas Linux y Unix que traduce, elimina y exprime caracteres de la entrada estándar y escribe el resultado en la salida estándar.

El comando tr puede realizar operaciones como eliminar caracteres repetidos, convertir mayúsculas a minúsculas y reemplazar y eliminar caracteres básicos. Por lo general, se usa en combinación con otros comandos a través de tuberías.

En este tutorial, le mostraremos cómo usar el comando tr través de ejemplos prácticos y explicaciones detalladas de las opciones más comunes.

Cómo usar el comando tr

La sintaxis para el comando tr es la siguiente:

tr OPTION… SET1

tr acepta dos conjuntos de caracteres, generalmente con la misma longitud, y reemplaza los caracteres de los primeros conjuntos con los caracteres correspondientes del segundo conjunto.

Un SET es básicamente una cadena de caracteres, incluidos los caracteres especiales con barra invertida.

En el siguiente ejemplo, tr reemplazará todos los caracteres de la entrada estándar (linuxize), asignando los caracteres del primer conjunto con los correspondientes del segundo conjunto.

echo 'linuxize' | tr 'lin' 'red'

Cada aparición de l se reemplaza con r , i con e , n con d :

reduxeze

Los conjuntos de caracteres también se pueden definir utilizando rangos de caracteres. Por ejemplo, en lugar de escribir:

echo 'linuxize' | tr 'lmno' 'wxyz'

puedes usar:

echo 'linuxize' | tr 'ln' 'w-z'

Cuando se usa la opción -c ( --complement ), tr reemplaza todos los caracteres que no están en SET1.

En el ejemplo a continuación, todos los caracteres, excepto "li", se reemplazarán con el último carácter del segundo conjunto:

echo 'linuxize' | tr -c 'li' 'xy'

liyyyiyyy

Como habrás notado, la salida anterior tiene un carácter visible más que la entrada. Esto se debe a que el comando echo imprime un carácter invisible de nueva línea que también se reemplaza con y . Para hacer eco de una cadena sin una nueva línea, use la opción -n .

La opción -d ( --delete ) le dice a tr que elimine los caracteres especificados en SET1. Al eliminar caracteres sin apretar, especifique solo un conjunto.

El siguiente comando eliminará los caracteres l , i y z :

echo 'Linuxize' | tr -d 'liz'

El carácter L no se elimina porque la entrada incluye una L mayúscula, mientras que el carácter l en el SET está en minúsculas.

Lnuxe

La opción -s ( --squeeze-repeats ) reemplaza una secuencia de ocurrencias repetidas con el conjunto de caracteres en el último SET.

En el siguiente ejemplo, tr elimina los caracteres de espacio repetidos:

echo "GNU \ Linux" | tr -s ' '

GNU \ Linux

Cuando se utiliza SET2, la secuencia del carácter especificado en SET1 se reemplaza por SET2.

echo "GNU \ Linux" | tr -s ' ' '_'

GNU_\_Linux

La opción -t ( --truncate-set1 ) obliga a tr a truncar SET1 a la longitud de SET2 antes de realizar un procesamiento adicional.

Por defecto, si SET1 es mayor que SET2 tr , reutilizará el último carácter de SET2. Aquí hay un ejemplo:

echo 'Linux ize' | tr 'abcde' '12'

La salida muestra que el carácter e de SET1 coincide con el último carácter de SET2, que es 2 :

Linux iz2

Ahora, use el mismo comando con la opción -t :

echo 'Linux ize' | tr -t 'abcde' '12'

Linux ize

Puede ver que se eliminan los últimos tres caracteres del SET1. SET1 se convierte en 'ab', la misma longitud que SET2, y no se realiza ningún reemplazo.

Combinando opciones

El comando tr también le permite combinar sus opciones. Por ejemplo, el siguiente comando primero reemplaza todos los caracteres excepto i con 0 y luego exprime los 0 caracteres repetidos:

echo 'Linux ize' | tr -cs 'i' '0'

0i0i0

Ejemplos de comandos Tr

En esta sección, cubriremos algunos ejemplos de usos comunes del comando tr .

Convertir minúsculas en mayúsculas

La conversión de minúsculas a mayúsculas o inversa es uno de los casos de uso típicos del comando tr . coincide con todos los caracteres en minúscula y coincide con todos los caracteres en mayúscula.

echo 'Linuxize' | tr '' ''

LINUXIZE

En lugar de clases de caracteres, también puedes usar rangos:

echo 'Linuxize' | tr 'az' 'A-Z'

Para convertir mayúsculas a minúsculas, simplemente cambie los lugares de los conjuntos.

Eliminar todos los caracteres no numéricos

El siguiente comando elimina todos los caracteres no numéricos:

echo "my phone is 123-456-7890" | tr -cd

significa todos los caracteres de dígitos, y al usar la opción -c , el comando elimina todos los caracteres que no son dígitos. La salida se verá así:

1234567890

Pon cada palabra en una nueva línea

Para poner cada palabra en una nueva línea, necesitamos unir todos los caracteres no alfanuméricos y reemplazarlos con una nueva línea:

echo 'GNU is an operating system' | tr -cs '' '\n'

GNU is an operating system

Eliminar líneas en blanco

Para eliminar las líneas en blanco, simplemente presione los caracteres repetitivos de nueva línea:

tr -s '\n' < file.txt > new_file.txt

En el comando anterior, estamos usando el símbolo de redireccionamiento < para pasar el contenido del file.txt al comando tr . La redirección > escribe la salida del comando en new_file.txt .

Imprima directorios $PATH en una línea separada

La $PATH entorno $PATH es una lista de directorios delimitada por dos puntos que le dice al shell qué directorios buscar archivos ejecutables cuando escribe un comando.

Para imprimir cada directorio en una línea separada, debemos hacer coincidir los dos puntos (:) y reemplazarlo con la nueva línea:

echo $PATH | tr ':' '\n'

/usr/local/sbin /usr/local/bin /usr/sbin /usr/bin /sbin /bin

Conclusión

tr es un comando para traducir o eliminar caracteres.

Aunque es muy útil, tr solo puede funcionar con caracteres individuales. Para la coincidencia de patrones más complejos y la manipulación de cadenas, debe usar sed o awk .

terminal tr