L'utilitaire sed (ou stream editor) en ligne de commande permet de remplacer du texte à la volée via les expressions régulières classiques en programmation. Pour ceux qui ne connaissent pas un
devrait les éclairer. Quant à ceux qui connaissent déjà l'outil, ils ne devraient pas s'étonner beaucoup de la ligne suivante :
En clair : on demande à virer tous les FAUX par rien, et ô surprise : un FAUX résiste au nettoyage ! Normal : sed analyse le premier |FAUX|, le remplace, mais continue immédiatement au FAUX suivant sans le | de départ. Le second motif n'est donc pas analysé correctement, et n'est donc pas remplacé.
Pour forcer sed à faire son travail, il faut lui dire de "boucler" en plaçant une étiquette (ici le caractère a) au départ de l'expression, et un ta à la fin qui signifie "to a", et qui provoque le bouclage de l'expression tant que la recherche reste vraie.
Code : Tout sélectionner
$ echo '|FAUX|VRAI|FAUX|FAUX|FAUX|' | sed -e ':a s/|FAUX|/||/g;ta'
||VRAI||||
Les petites astuces de la ligne de commande n'ont l'air de rien sous GNU/Linux, mais elles permettent un gain de temps impressionnant dans le nettoyage des fichiers, et notamment dans des données CSV issues de bases de données.