Je veux supprimer toutes les lignes vides d'un fichier. Même si la ligne contient des espaces ou des tabulations, elle doit également être supprimée.
Réponse acceptée :
Juste grep
pour les non-blancs :
grep '[^[:blank:]]' < file.in > file.out
[:blank:]
, à l'intérieur des plages de caractères ([...]
), est appelée une classe de caractères POSIX. Il y en a quelques-uns comme [:alpha:]
, [:digit:]
… [:blank:]
correspond à l'espace blanc horizontal (dans les paramètres régionaux POSIX, c'est l'espace et la tabulation, mais dans d'autres paramètres régionaux, il pourrait y en avoir plus, comme tous les caractères d'espacement horizontal Unicode dans les paramètres régionaux UTF8) tandis que [[:space:]]
correspond aux caractères d'espace blancs horizontaux et verticaux (identique à [:blank:]
plus des choses comme l'onglet vertical, le saut de page…).
grep '[:blank:]'
Renverrait les lignes qui contiennent l'un des caractères, :
, b
, l
, a
, n
ou k
. Les classes de caractères ne sont reconnues que dans [...]
, et ^
dans [...]
nie l'ensemble. Donc [^[:blank:]]
signifie n'importe quel caractère sauf les blancs.