FILE
:
hello
world
foo
bar
Comment peut-on supprimer toutes les nouvelles lignes vides de cette FILE
?
Sortie de commande:
FILE
:
hello
world
foo
bar
grep . FILE
(Et si vous voulez vraiment le faire en sed, alors: sed -e /^$/d FILE
)
(Et si vous voulez vraiment le faire dans awk, alors: awk /./ FILE
)
Essayez ce qui suit:
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
Voici une solution qui supprime toutes les lignes vides ou ne contenant que des espaces:
grep -v '^[[:space:]]*$' foo.txt
Essayez ceci: sed -i '/^[ \t]*$/d' file-name
Il supprimera toutes les lignes vierges sans aucun numéro. d’espaces blancs (espaces ou tabulations), c’est-à-dire (0 ou plus) dans le fichier.
Remarque: il y a un espace suivi de\t à l'intérieur du crochet.
Le modificateur -i
obligera à écrire le contenu mis à jour dans le fichier. Sans cet indicateur, vous pouvez voir les lignes vides supprimées à l'écran, mais le fichier réel ne sera pas affecté.
grep '^..' my_file
exemple
THIS
IS
THE
FILE
EOF_MYFILE
il ne donne en sortie que des lignes d'au moins 2 caractères.
THIS
IS
THE
FILE
EOF_MYFILE
Voir aussi les résultats avec les sorties grep '^' my_file
THIS
IS
THE
FILE
EOF_MYFILE
et aussi avec les sorties grep '^.' my_file
THIS
IS
THE
FILE
EOF_MYFILE
Si supprimer des lignes vides signifie des lignes incluant des espaces, utilisez:
grep '\S' FILE
Par exemple:
$ printf "line1\n\nline2\n \nline3\n\t\nline4\n" > FILE
$ cat -v FILE
line1
line2
line3
line4
$ grep '\S' FILE
line1
line2
line3
line4
$ grep . FILE
line1
line2
line3
line4
Voir également:
Perl est peut-être exagéré, mais cela fonctionne aussi bien.
Supprime toutes les lignes complètement vides:
Perl -ne 'print if /./' file
Supprime toutes les lignes complètement vides ou ne contenant que des espaces:
Perl -ne 'print if ! /^\s*$/' file
Variation qui édite l'original et crée un fichier .bak:
Perl -i.bak -ne 'print if ! /^\s*$/' file
Essayez ex - manière:
ex -s +'v/\S/d' -cwq test.txt
Pour plusieurs fichiers (éditer sur place):
ex -s +'bufdo!v/\S/d' -cxa *.txt
Sans modifier le fichier (simplement imprimer sur la sortie standard):
cat test.txt | ex -s +'v/\S/d' +%p +q! /dev/stdin