J'ai des fichiers textes pleins de lignes vides (des retours chariot), comment s'en débarrasser en une seconde?
Pour les fichiers php ou html que je vais poster sur le net, j'aime bien me débarrasser de toutes les lignes vides qui traînent dans le fichier. D'habitude, ce sont des résidus de fonctions rechercher-remplacer, et malgré tous mes efforts, je n'ai jamais pu trouver une commande qui permette de les retirer depuis un éditeur de texte comme kate, quanta, ou emacs...
Dans ces cas là, sed est votre meilleur ami... Ce programme a été écrit il y a des années pour des systèmes Unix. Depuis, il a été porté sur une multitude de plateformes, dont linux. En gros, c'est un éditeur de texte non-interactif qui s'utilise depuis la console. Son gros avantage: pouvoir réaliser des opérations complexes sur des fichiers textes, sans passer par une interface graphique, sans question à l'utilisateur, et donc sans perte de temps.
Bon, voici la solution à notre problème: ouvrez une konsole (Figure 1), déplacez-vous dans le dossier ou se trouve le fichier à éditer (cd MonDossier), et tapez les deux lignes suivantes
sed '/^$/d' monFichier > tt
mv tt monFichier
Voici ce qui se passe:
sed '/^$/d' monFichierretire toutes les lignes vides du fichiermonFichieret envoie le résultat dans la console,> ttredirige le résultat de le commandeseddans le fichiertt(ça s'appelle unpipe),mv tt monFichierrenomme le fichierttenmonFichier.
Maintenant, il se peut que vous ayez 800 fichiers html à corriger. C'est là qu'intervient la commande foreach... Disons que vous voulez corriger tous les fichiers se terminant par .html, voici ce qu'il faut faire:
- ouvrir une konsole (Figure 1),
- déplacez-vous vers le dossier où sont vos fichiers html,
- tapez les commandes suivantes:
foreach file (*html)
sed '/^$/d' $file > tt
mv tt $file
end - Et voilà, c'est tout!
