GNU/Linux >> Tutoriales Linux >  >> Linux

Eliminar líneas vacías usando sed

Puede tener espacios o tabulaciones en su línea "vacía". Usar clases POSIX con sed para eliminar todas las líneas que contienen solo espacios en blanco:

sed '/^[[:space:]]*$/d'

Una versión más corta que usa ERE, por ejemplo con gnu sed:

sed -r '/^\s*$/d'

(Tenga en cuenta que sed NO apoyo PCRE.)


me falta el awk solución:

awk 'NF' file

Que devolvería:

xxxxxx
yyyyyy
zzzzzz

¿Como funciona esto? Desde NF significa "número de campos", esas líneas que están vacías tienen 0 campos, por lo que awk evalúa 0 como Falso y no se imprime ninguna línea; sin embargo, si hay al menos un campo, la evaluación es True y hace awk realiza su acción predeterminada:imprimir la línea actual.


sed

  • '/^[[:space:]]*$/d'
  • '/^\s*$/d'
  • '/^$/d'
  • -n '/^\s*$/!p'

grep

  • .
  • -v '^$'
  • -v '^\s*$'
  • -v '^[[:space:]]*$'

wow

  • /./
  • 'NF'
  • 'length'
  • '/^[ \t]*$/ {next;} {print}'
  • '!/^[ \t]*$/'

sed '/^$/d' debería estar bien, ¿espera modificar el archivo en su lugar? Si es así, debe usar el -i bandera.

Tal vez esas líneas no estén vacías, así que si ese es el caso, mire esta pregunta Eliminar líneas vacías de archivos txt, eliminar espacios al principio y al final de la línea. Creo que eso es lo que está tratando de lograr.


Linux
  1. ¿Coincidencia de patrones multilínea usando Sed, Awk o Grep?

  2. ¿Reemplazar una palabra o número en una oración menor a 8 usando Awk o Sed?

  3. ¿Cómo eliminar las primeras N líneas de un archivo ASCII usando los comandos de Shell?

  4. sed unir líneas

  5. Eliminar un carácter específico usando awk o sed

Cómo eliminar líneas en Vim / Vi

Cómo quitar líneas de un archivo usando el comando Sed

Cómo eliminar líneas vacías en archivos usando Grep, Sed y Awk

Tutorial de Unix Sed:eliminar líneas de archivos usando direcciones y patrones

¿Cómo cambiar un archivo en el lugar usando awk? (como con sed -i)

Reemplazo de SED en varias líneas