2012-10-06 19 views
6

he utilizado un comando grep con SED y cortan filtros que básicamente me revuelve salida a algo similar a estoShell Extracción Tabs/Espacios

this line 1 


    this line 2 


    another line 3 


    another line 4 

que estoy tratando de conseguir una producción sin los espacios intermedios las líneas y al frente de las líneas para que se vea como

this line 1 
    this line 2 
    another line 3 
    another line 4 

Me gustaría agregar otro | filtrar

Respuesta

5

Añadir este filtro para eliminar los espacios en blanco desde el principio de la línea y eliminar las líneas en blanco, observe que utiliza dos sed comandos, uno para eliminar espacios en blanco, y otro para borrar líneas sin contenido

| sed -e 's/^\s*//' -e '/^$/d' 

Hay un ejemplo en the Wikipedia article for sed que usa el comando d para eliminar líneas que están en blanco o solo contienen espacios, mi solución usa la secuencia de escape \s para que coincida con cualquier carácter en blanco (espacio, pestaña, etc.), aquí está el ejemplo de Wikipedia :

sed -e '/^ *$/d' inputFileName 
  • El símbolo de intercalación (^) coincide con el comienzo de la línea.
  • El signo de dólar ($) coincide con el final de la línea.
  • El asterisco (*) coincide con cero o más apariciones del carácter anterior.
+0

Esta fue la primera respuesta que funcionó para mí después de intentar las respuestas más arriba en esta lista. – k0pernikus

0
(whateverproducesthisoutput)|sed -E 's/^[[:space:]]+//'|grep -v '^$' 

(dependiendo de su sed, se puede reemplazar con [[:space:]]\s).

3

Esto se puede hacer con el comando tr también. Al igual que

| tr -s [:space:]

o alternativamente

| tr -s \\n

si desea eliminar los saltos de línea única, sin los caracteres de espacio en el principio de cada línea.

+3

¿No dejará el primer comando 'tr -s [: space:]' un espacio en blanco? - Comprime todos menos uno de los espacios en blanco consecutivos. – amdn

+0

@amdn tiene razón, esto deja un espacio en blanco inicial –

+0

+1 para un método fácil. Alguna idea de cómo podría mantener los colores de egrep? – p1100i

2

También puede utilizar grep:

... | grep -o '[^$(printf '\t') ].*' 

Aquí es la impresión de líneas que tienen al menos un carácter que no sea un espacio en blanco. Al usar el indicador "-o", imprimimos solo la coincidencia, y forzamos la coincidencia para que comience en un personaje que no sea de espacio en blanco.

EDITAR: Se modificó el comando para que pueda eliminar los caracteres de espacios en blanco iniciales.

Espero que esto ayude =)

+0

Agradable ... pero no eliminará los espacios en blanco iniciales en líneas no en blanco. – amdn

+0

Sí, echo de menos eso =/Espero que esta solución lo solucione –

+0

En mi sistema esto elimina el carácter 't' en lugar del carácter de tabulación – amdn

2

Me gustaría hacer esto, corto y simple:

sed 's: ::g' 

Añadir esto al final de su mandato, y todos los espacios irán puf.Por ejemplo probar este comando:

cat/proc/meminfo | sed 's: ::g' 
0

Uso grep "^." filename para eliminar líneas en blanco, mientras que printing.Here, las líneas que comienzan con cualquier personaje se corresponde de manera que las líneas en blanco se dejan de lado.