Vous pouvez avoir des espaces ou des tabulations dans votre ligne "vide". Utiliser les classes POSIX avec sed
pour supprimer toutes les lignes contenant uniquement des espaces :
sed '/^[[:space:]]*$/d'
Une version plus courte qui utilise ERE, par exemple avec gnu sed :
sed -r '/^\s*$/d'
(Notez que sed ne fait PAS soutenir PCRE.)
Il me manque le awk
solution :
awk 'NF' file
Ce qui renverrait :
xxxxxx
yyyyyy
zzzzzz
Comment cela marche-t-il? Depuis le NF
signifie "nombre de champs", ces lignes étant vides ont 0 champs, de sorte que awk évalue 0 à False et aucune ligne n'est imprimée ; cependant, s'il y a au moins un champ, l'évaluation est True et fait awk
effectuer son action par défaut :imprimer la ligne courante.
sé
'/^[[:space:]]*$/d'
'/^\s*$/d'
'/^$/d'
-n '/^\s*$/!p'
grep
.
-v '^$'
-v '^\s*$'
-v '^[[:space:]]*$'
mauvais
/./
'NF'
'length'
'/^[ \t]*$/ {next;} {print}'
'!/^[ \t]*$/'
sed '/^$/d'
devrait être bon, comptez-vous modifier le fichier en place ? Si c'est le cas, vous devez utiliser le -i
drapeau.
Peut-être que ces lignes ne sont pas vides, donc si c'est le cas, regardez cette question Supprimer les lignes vides des fichiers txt, supprimer les espaces au début et à la fin de la ligne Je pense que c'est ce que vous essayez de réaliser.