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.