Supprimer les lignes vides dans un fichier texte via grep
-
05-07-2019 - |
Question
FILE
:
hello
world
foo
bar
Comment peut-on supprimer toutes les nouvelles lignes vides de ce FILE
?
Résultat de la commande:
FILE
:
hello
world
foo
bar
La solution
grep. FICHIER
(Et si vous voulez vraiment le faire dans sed, alors: sed -e / ^ $ / d FICHIER
)
(Et si vous voulez vraiment le faire dans awk, alors: awk /./ FILE
)
Autres conseils
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] * nom de fichier
Cela effacera toutes les lignes vierges sans no. 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 lui-même ne sera pas affecté.
grep '^ ..' mon_fichier
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 '^' mon_fichier
et aussi avec grep '^.' mon_fichier
sorties
Essayez ex -way:
ex -s +'v/\S/d' -cwq test.txt
Pour plusieurs fichiers (modifier sur place):
ex -s +'bufdo!v/\S/d' -cxa *.txt
Sans modifier le fichier (il suffit d'imprimer sur la sortie standard):
cat test.txt | ex -s +'v/\S/d' +%p +q! /dev/stdin
Perl est peut-être excessif, 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 modifie l'original et crée un fichier .bak:
perl -i.bak -ne 'print if ! /^\s*$/' file