eliminación sed de espacios en blanco

eliminación sed de espacios en blanco

Encuentro que seda menudo no se logra hacer coincidir el patrón de espacios en blanco. Considere los siguientes ejemplos:

echo 'A     B     C' | sed 's/[ \t]*//g'
ABC

echo -e 'A\tB\tC' | sed 's/[ \t]*//g'
A       B       C

perl -e 'print "A     B     C\n"' | sed 's/[ \t]*//g'
ABC

perl -e 'print "A\tB\tC\n"' | sed 's/[ \t]*//g'
A       B       C

¿Alguien podría explicar por qué seda veces no coincide con los espacios en blanco?

Respuesta1

1.

echo -e 'A\tB\tC' | sed 's/[ \t]*//g'
A       B       C

Funciona para mi

$ echo -e 'A\tB\tC' | sed 's/[ \t]*//g'
ABC

Prueba esto

$ echo -e 'a\tb' | sed -e 's/[ \t]//'
ab

2.

perl -e 'print "A     B     C\n"' | sed 's/^[ \t]*//g'
A       B       C

su cadena no contiene un espacio al inicio ( ^) de la línea

Respuesta2

Algunas versiones de sedno son compatibles \ty otras se escapan en el lado izquierdo de un comando de sustitución.

Puede encontrar información sobre las variaciones entre las versiones de seden elPreguntas más frecuentes.

Respuesta3

La segunda declaración que tiene arriba funciona en mi máquina (Ubuntu 10.10 amd64, sed versión 4.2.1, paquete sed versión 4.2.1-7) y realmente no tengo una explicación de por qué esa no funcionaría.

El tercero y el cuarto se deben a que estás usando el ancla de inicio de línea (^), por lo que seríasoloelimine el espacio en blanco inicial y en el texto de entrada, no tendrá ningún espacio en blanco al principio de las líneas.

Respuesta4

Deberías usar\spara que coincida tanto con espacios en blanco como con tabulación:

echo 'A     B     C' | sed 's/\s//g'
ABC

echo -e 'A\tB\tC' | sed 's/\s//g'
ABC

perl -e 'print "A     B     C\n"' | sed 's/\s//g'
ABC

perl -e 'print "A\tB\tC\n"' | sed 's/\s//g'
ABC

información relacionada