El verdadero poder de Linux es que hay muchos programas/utilidades creadas para hacernos la vida más fácil. Cuando escribe muchos scripts de shell en su entorno, este conjunto de programas resulta útil, donde utilizará estos programas para manipular su entrada o salida en sus scripts. Una de esas utilidades es tr
, que significa traducir . Como su nombre lo indica, el comando tr se usa para traducir, comprimir y eliminar caracteres de la entrada estándar, escribiendo en la salida estándar en sistemas operativos Linux y similares a Unix.
En este artículo, aprenderemos el uso del comando tr con ejemplos prácticos. Al final de esta guía, se sentirá cómodo usando el comando tr y sabrá en qué escenario sería beneficioso usar este comando.
sintaxis y ayuda del comando tr
Para conocer la sintaxis y la lista de argumentos que admite el comando tr, consulte la página del manual o use --help
marcar con tr
comando.
$ man tr
$ tr --help
El tr
El comando acepta dos argumentos en forma de SET1 y SET2 donde SET1 serán caracteres de entrada que serán traducidos por caracteres en SET2 . Cuando se pasan ciertos indicadores al comando tr, SET2 podría usarse opcionalmente.
tr [OPTION]… SET1 [SET2]
Ejemplo 1 - Traducir con el comando tr
A continuación se muestra un ejemplo simple de cómo usar el tr
dominio. El tr
el comando se canaliza con el echo
comando y minúsculas "ost" se convierte a mayúsculas "OST" .
La conversión aquí ocurrirá en función de la posición de los caracteres en dos conjuntos. El primer carácter de SET1 será reemplazado por el primer carácter de SET2 (o->O ), de igual forma para todos los caracteres (s->S ,t->T ).
$ echo "ostechnix" | tr "ost" "OST"
OSTechnix
Lectura sugerida:
- Comando Bash Echo explicado con ejemplos en Linux
Ejemplo 2 - Juegos de caracteres y caracteres especiales
El tr
comando ofrece el uso de conjuntos de caracteres que hace que la conversión sea muy fácil. El tr
El comando también puede interpretar caracteres especiales como (\n
,\t
,\v
) que se puede traducir con diferentes caracteres.
Veamos cómo usar el juego de caracteres. En el siguiente ejemplo, tengo cadenas, números enteros y caracteres de puntuación. los caracteres de puntuación se reemplazan por un punto (.
) usando "[:punct:]"
juego de caracteres.
$ echo "Ubuntu 20.04 #$%^" | tr "[:punct:]" "."
Ejemplo 3 - Conversión de casos
Cuando trabaje con cadenas, es posible que desee cambiar el caso de la cadena de inferior a superior o viceversa. Usando el tr
comando, puede hacer la conversión de mayúsculas y minúsculas de diferentes maneras.
En la primera forma, puede escribir a a z tanto en el set 1 como en el set 2.
$ echo "ostechnix" | tr "abcdefghijklmnopqrstuvwxyz" "ABCDEFGHIJKLMNOPQRSTUVWXYZ"
OSTECHNIX
Tenga en cuenta que esta no es una forma preferida.
En lugar de escribir todos los caracteres, también puede usar rangos (es decir, a-z , A-Z ).
$ echo "ostechnix" | tr "a-z" "A-Z" # Lower to Upper case
OSTECHNIX
$ echo "OSTECHNIX" | tr "A-Z" "a-z" # Upper to Lower case
ostechnix
Las clases de caracteres también se pueden usar en lugar de los dos métodos anteriores.
$ echo "OSTECHNIX" | tr "[:upper:]" "[:lower:]"
ostechnix
$ echo "ostechnix" | tr "[:lower:]" "[:upper:]"
OSTECHNIX
Ejemplo 4 - Eliminar caracteres
Hay un conjunto de argumentos opcionales que tr
apoya para realizar diversas acciones.
Una de esas banderas es "-d
o --delete
" que eliminará los caracteres que se dan en SET1.
A continuación se muestra la entrada donde tengo tres direcciones IP con espacios en blanco en cada línea y pestañas (2) en la tercera línea. Ahora usando -d
bandera puede limpiar los espacios en blanco.
192.168. 1. 12 192.168. 1. 13 192.168. 1. 14
Ejecute el siguiente comando que eliminará todos los espacios en blanco. Un punto importante a tener en cuenta aquí es que las pestañas no se eliminan, sino que solo se eliminan los espacios en blanco.
$ tr -d " " < tr_test.txt
Si desea eliminar tanto el espacio como las pestañas (espacios en blanco horizontales), puede usar el "[:blank:]"
juego de caracteres.
$ tr -d "[:blank:]" < tr_test.txt
También puede usar el "[:space:]"
conjunto de caracteres para eliminar espacios en blanco horizontales y verticales.
$ tr -d "[:space:]" < tr_test.txt
Ejemplo 5:apretar repeticiones
Cuando la bandera "-s
o --squeeze-repeats
", los caracteres repetidos dados en SET1 serán reemplazados con una sola ocurrencia del carácter. En el siguiente ejemplo, puede ver que he usado 4 igual a (=
) señal. Ahora -s
reemplazará 4 (=
) con 1 (=
).
$ echo "Production IP ==== 192.168.1.10" | tr -s "=" Production IP = 192.168.1.10
A continuación se muestra otro ejemplo donde los caracteres de nueva línea (\n
) están exprimidos.
$ cat tr_test.txt | tr -s "\n"
Ejemplo 6 - Complemento
Cuando -c
se usa la bandera, hará una traducción inversa para el conjunto dado. En el siguiente ejemplo, el tr traducirá todos los alfabetos a "*"
normalmente. Pero cuando -c
se utiliza, la operación se invertirá. Aparte de los alfabetos, todos los demás caracteres se reemplazarán con "*"
.
$ echo "Employee Number is 1267890" | tr -c "[:alpha:]" "*"
Puede combinar esto con otras banderas para obtener ciertos resultados. Por ejemplo, cuando se combina con -d
marca, hará una operación de eliminación inversa.
$ echo "Employee Number is 1267890" | tr -cd "[:digit:]"
Ejemplo 7 - Salida de redireccionamiento
En todas las secciones anteriores, leímos la entrada del archivo y realizamos un procesamiento con tr
comando y la salida se envía a la terminal. Si desea redirigir la salida a un archivo en lugar de a una terminal, utilice el operador de redirección.
$ tr -s "\n" < tr_test.txt > new_tr_test.txt
$ gato nuevo_tr_test.txt
Lectura relacionada:
- Redireccionamiento de Bash explicado con ejemplos
Conclusión
En este artículo, te he explicado cómo usar el tr
dominio. En Linux, siempre hay múltiples formas de lograr lo mismo. Lo que hemos mostrado en este artículo también se puede lograr con otros programas como sed
, awk
, etc. Pero conocer estos comandos y las diferentes formas lo ayudará a decidir la situación correcta para usar el comando/programa correcto.