Rimuovi le righe vuote in un file di testo tramite grep
-
05-07-2019 - |
Domanda
:
hello
world
foo
bar
Come è possibile rimuovere tutte le nuove righe vuote in questo FILE
?
Output del comando:
:
hello
world
foo
bar
Soluzione
grep. FILE
(E se vuoi davvero farlo in sed, allora: sed -e / ^ $ / d FILE
)
(E se vuoi davvero farlo in awk, allora: awk /./ FILE
)
Altri suggerimenti
Prova quanto segue:
grep -v -e '^
with awk, just check for number of fields. no need regex
$ more file
hello
world
foo
bar
$ awk 'NF' file
hello
world
foo
bar
Ecco una soluzione che rimuove tutte le righe vuote o che contengono solo spazi:
grep -v '^[[:space:]]* foo.txt
Prova questo: sed -i '/ ^ [\ t] * $ / d' nome-file
Eliminerà tutte le righe vuote con nessun numero. di spazi bianchi (spazi o tabulazioni), ovvero (0 o più) nel file.
Nota: c'è uno 'spazio' seguito da '\ t' all'interno della parentesi quadra.
Il modificatore -i
forzerà a riscrivere i contenuti aggiornati nel file. Senza questo flag puoi vedere le righe vuote cancellate sullo schermo ma il file effettivo non sarà interessato.
grep '^ ..' my_file
Esempio
THIS
IS
THE
FILE
EOF_MYFILE
fornisce in output solo righe con almeno 2 caratteri.
THIS
IS
THE
FILE
EOF_MYFILE
Vedi anche i risultati con grep '^' my_file
output
e anche con grep '^.' my_file
output
Prova ex -way:
ex -s +'v/\S/d' -cwq test.txt
Per più file (modifica sul posto):
ex -s +'bufdo!v/\S/d' -cxa *.txt
Senza modificare il file (basta stampare sull'output standard):
cat test.txt | ex -s +'v/\S/d' +%p +q! /dev/stdin
Perl potrebbe essere eccessivo, ma funziona altrettanto bene.
Rimuove tutte le righe completamente vuote:
perl -ne 'print if /./' file
Rimuove tutte le righe completamente vuote o che contengono solo spazi bianchi:
perl -ne 'print if ! /^\s*$/' file
Variazione che modifica l'originale e crea un file .bak:
perl -i.bak -ne 'print if ! /^\s*$/' file