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.