171 votes

Comment supprimer les lignes vides/blanches d'un fichier sous Unix (y compris les espaces) ?

Comment supprimer les lignes vides/blanches (incluant uniquement les espaces) dans un fichier sous Unix/Linux en utilisant la ligne de commande ?

contenu du fichier.txt

Line:Text
1:<blank>
2:AAA
3:<blank>
4:BBB
5:<blank>
6:<space><space><space>CCC
7:<space><space>
8:DDD

résultat souhaité

1:AAA
2:BBB
3:<space><space><space>CCC
4:DDD

2 votes

2 votes

C'est une réponse épique qui donne à peu près toutes les solutions possibles en utilisant grep, sed, awk : stackoverflow.com/questions/16414410/

9voto

siddhadev Points 191

Pour supprimer les lignes vides, vous pourriez comprimer les nouvelles répétitions de lignes avec tr :

cat file.txt | tr -s '\n' '\n'

0 votes

Cela produit 6 lignes, et non 4 comme demandé par le PO.

2voto

christianlc Points 121

Xargs si cela ne vous dérange pas de supprimer les espaces en tête de page

$ docker run -it --rm alpine sh
/ # cat <<eof > /tmp/file
> one
>
>   two
> three
>
>
>   four
> eof
/ # cat /tmp/file
one

  two
three

  four
/ # cat /tmp/file | xargs -n1
one
two
three
four

1voto

Zafar Points 241

Ex/Vim

Voici la méthode qui utilise ex éditeur (partie de Vim) :

ex -s +'v/\S/d' -cwq test.txt

Pour les fichiers multiples (édition sur place) :

ex -s +'bufdo!v/\S/d' -cxa *.txt

Note : Le :bufdo n'est pas POSIX .

Sans modifier le fichier (juste l'imprimer sur la sortie standard) :

cat test.txt | ex -s +'v/\S/d' +%p +q! /dev/stdin

1voto

ishandutta2007 Points 143

Pour moi, la commande @martigin-heemels générait une erreur et cela l'a corrigé (c'est-à-dire un paramètre fictif pour i),

sed -i '' '/^$/d' file.txt

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X