Potresti avere spazi o tabulazioni nella riga "vuota". Usa le classi POSIX con sed per rimuovere tutte le righe contenenti solo spazi bianchi:
sed '/^[[:space:]]*$/d'
Una versione più breve che utilizza ERE, ad esempio con gnu sed:
sed -r '/^\s*$/d'
(Nota che sed NON supporta PCRE.)
Mi manca il awk soluzione:
awk 'NF' file
Che restituirebbe:
xxxxxx
yyyyyy
zzzzzz
Come funziona? Dal NF sta per "numero di campi", quelle righe che sono vuote hanno 0 campi, quindi awk valuta da 0 a False e non viene stampata alcuna riga; tuttavia, se è presente almeno un campo, la valutazione è True e rende awk esegue la sua azione predefinita:stampa la riga corrente.
sed
'/^[[:space:]]*$/d''/^\s*$/d''/^$/d'-n '/^\s*$/!p'
grep
.-v '^$'-v '^\s*$'-v '^[[:space:]]*$'
awk
/./'NF''length''/^[ \t]*$/ {next;} {print}''!/^[ \t]*$/'
sed '/^$/d' dovrebbe andare bene, ti aspetti di modificare il file sul posto? Se è così dovresti usare il -i bandiera.
Forse quelle righe non sono vuote, quindi se è così, guarda questa domanda Rimuovi le righe vuote dai file txt, rimuovi gli spazi dall'inizio e dalla fine della riga Credo che sia quello che stai cercando di ottenere.