GNU/Linux >> Tutoriales Linux >  >> Linux

¿Cómo funcionan las opciones '-s', '-t' y '-c' del comando tr en Unix?

-s Cambiar:apretar (eliminar caracteres repetidos)

echo i am a good boy | tr -s good bad

salida:i am a bd bdy

Hay dos cosas que suceden detrás de escena que hacen que esto suceda. En primer lugar, si el segundo argumento de tr es más corto que el primero y luego el último carácter en el segundo argumento se repite para que tenga la misma longitud que el primero. Entonces el comando equivalente es:

echo i am a good boy | tr -s good badd

La otra cosa que sucede es que cuando se repiten los caracteres en el primer argumento, sobrescriben cualquier ocurrencia anterior (me refiero a los dos oo s en good ). Esto hace que el comando ahora sea equivalente a:

echo i am a good boy | tr -s god bdd

(el segundo o a d el reemplazo sobrescribe el anterior o a a reemplazo, haciéndolo redundante)

Sin el -s cambiar la salida sería

i am a bddd bdy

Con el -s interruptor tr 'aprieta' los caracteres repetidos que se enumeran en el último argumento dejando el resultado final:

i am a bd bdy

-c Cambiar:Complemento

El -c switch se usa para hacer coincidir el complemento del primer argumento (es decir, todos los caracteres que no aparecen en arg 1). Como resultado, arg 1 contendrá muchas letras (256-3). Ahora, sucede lo mismo con arg 2 que en el caso anterior:el carácter final de Arg 2 se repite para que coincida con la longitud de Arg 1. Entonces, la declaración original:

echo i am a good boy | tr -c good bad

es equivalente a:

echo i am a good boy | tr abcefhijklmnp... baddddddddddd...

(tenga en cuenta el g que falta , o y d en el primer conjunto, también tenga en cuenta que d reemplazará todos los demás caracteres en el segundo conjunto, incluido el carácter de espacio)

Por eso i am a good boy se convierte en dddddddgoodddodd

Más información aquí:http://www.linuxjournal.com/article/2563


Su comprensión de -s es incorrecto, reemplaza las apariciones repetidas de caracteres en el conjunto 1 en la entrada con un solo carácter. no modifica el conjunto, por ejemplo.

echo i am a good boy | tr -s god bad

da

i am a bad bay

El -c opción reemplaza el conjunto 1 con su complemento (es decir, el conjunto de todos los caracteres no contenidos en el conjunto 1). Puede usar esto para eliminar todos los caracteres excepto los especificados, por ejemplo.

echo i am a good boy | tr -cd gobdy

salidas

goodboy

Linux
  1. Cómo crear un alias y usar el comando Alias ​​en Linux

  2. El comando AWK de Linux:ejemplos de sintaxis de uso de Linux y Unix

  3. ¿Explicar las opciones del comando Readlink?

  4. ¿Cómo recordar las opciones de comando?

  5. ¿Cómo funciona el comando Exit en una terminal Unix?

Cómo usar y aprovechar al máximo el comando fuser en Linux

Cómo instalar y usar el comando Exa en Ubuntu 20.04

¿Qué es el comando fuente en Linux y cómo funciona?

Cómo instalar y usar el comando de pantalla Ubuntu 20.04

Cómo instalar y usar el comando Ack en Linux

Perf de Linux:cómo usar el comando y el generador de perfiles