Domanda

:

hello

world

foo

bar

Come è possibile rimuovere tutte le nuove righe vuote in questo FILE ?

Output del comando:

:

hello
world
foo
bar
È stato utile?

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
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top