2011-09-26 9 views

Respuesta

22

sed no sabe acerca de secuencias de escape como \t. Por lo que tiene que, literalmente, escriba un tab en la consola:

sed 's/^ *$//g' <filename> 

Si usted está en fiesta, entonces no se puede escribir tab en la consola. Tendrá que hacer ^V y luego presionar tab. (Ctrl-V y luego tab) para imprimir una pestaña literal.

+8

Si se utiliza bash, también se puede hacer '/^\ t * $ $ sed 's // g'', porque el uso de un signo de dólar en una entre comillas simples formatos de cadena de escape códigos como \ t. –

+0

bueno uno Max! No lo sabía Deberías poner eso como una respuesta separada. –

+0

El tuyo está lo suficientemente cerca. :) –

1

La otra solución publicada funcionará cuando haya 1 (y solo 1) pestaña en la línea. Tenga en cuenta que Raze2dust señala que sed requiere que escriba una pestaña literal. Una alternativa es:

sed '/[^  ]/!s/ //g' file-name.txt 

Que sustituye las pestañas de las líneas que solo tienen pestañas. La clase invertida coincide con las líneas que contienen cualquier error en una pestaña, la siguiente '!' hace que no coincida con esas líneas, es decir, solo las líneas que tienen solo pestañas. La sustitución solo se ejecuta en esas líneas, eliminando todas las pestañas.

2

Para sustituir líneas de espacio en blanco arbitrarios con una línea vacía, utilice

sed -r 's/^\s+$//' 

La bandera -r dice a utilizar expresiones regulares extendidas, y la \^s patrón + $ coincide con todas las líneas con algunos espacios en blanco pero no otros caracteres .

-1
grep -o ".*" file > a; mv a file; 
+0

Y esto hace qué, exactamente? Porque no hace lo que pidió el OP. –

+0

no estoy seguro si es trolling, pero si es así, brillante .... – ansiart

0

He notado \ t no es reconocido por UNIX. Siendo dicho, use la clave real. En el siguiente código, TAB representa presionar la tecla de tabulación.

$ sed 's/TAB // g' viejoarchivo> nuevofichero

punta ambiente: para asegurarse de tener pestañas en el archivo que está intentando quitar las pestañas de utilizar el siguiente código para ver si \ t aparece

$ od -c nombre

Cuestiones relacionadas