Estoy confundido con respecto a la forma -s, -ty -copciones de trabajo en el tr comando. Cuando lo hago
echo I am a good boy | tr good bad
Me sale la salida:
I am a bddd bdy
Esto es bastante comprensible, ya que ose repite en good. El último cambio posible en lugar de oes d, y por lo tanto, la salida.
Ahora cuando lo hago
echo I am a good boy | tr -s good bad
la salida es
I am a bd bdy
Se -ssupone que la opción exprime cada ocurrencia repetida de cada carácter en el conjunto 1 en una sola ocurrencia y luego cambia cada carácter en el conjunto 1 en el carácter correspondiente en el conjunto 2 que está en la misma posición.
Entonces debería haber sido
I am a bad bay.
¿Por qué el cambio?
Además, cuando lo hago
echo I am a good boy | tr -c good bad
yo obtengo dddddddgoodddodd
¿Cómo funciona la -copción tr, refiriéndose a este ejemplo?
Y finalmente: cómo cambiarme de un buen chico a un chico malo .... :): P Eso es,
echo I am a good boy | tr <something>me da la salida como: I am a bad boy.

-scambio hacetrque exprima cualquier carácter del último argumento atr(no el primero, como usted dice) que se repite en la entrada. Esto se observa en el artículo que vinculó y se explica en el último párrafo en la sección "Descripción" de la página del manual .Su comprensión de
-ses incorrecta, reemplaza las apariciones repetidas de caracteres en el conjunto 1 en la entrada con un solo carácter. no modifica el conjunto, p. ej.da
La
-copció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.salidas
fuente
Las otras respuestas cubiertos
tr's-s,-ty-copciones, pero está completo:Tiene problemas porque eligió la herramienta incorrecta.
tres para transformaciones de personajessedes para la edición de transmisiones.Dado que ambos
goodybadson secuencia de caracteres en la secuenciasedes una mejor coincidencia.echo I am a good boy | <something>me da la salida como:I am a bad boyEl
s/..../..../es sustituto. Lo que coincida con la primera expresión regular se reemplazará con la segunda. La/gbandera al final es para reemplazo global de esta manera, todas las ocurrencias serán reemplazadas, no solo la primera.fuente
si. ¡exactamente!
tr -sreemplaza instancias de caracteres repetidos con un solo carácter.(a través de la página de manual)
entonces, va así:
se convierte
goodabddd. Las instancias repetidas son 3 'd's.entonces reemplaza estas tres instancias con una sola instancia.
eso es lo hace bd. :)
fuente