J'ai des fichiers texte avec des tonnes de commentaires. Comment s'en débarrasser en une seconde?
Cet article ressemble beaucoup a un post d'il y a quelques mois (Effacer les lignes vides avec sed), mais je pense qu'il peut tout de même être utile pour certains d'entre nous...
De temps en temps, il se peut que vous vouliez retirer toutes les lignes de commentaire d'un fichier texte. Il y a deux cas de figure
- vos lignes de commentaire débutent par un symbole particulier,
- vos commentaires sont sur les
npremières lignes.
Effacer les lignes de commentaire débutant par un symbol particulier
Si vos lignes de commentaire débutent par le symbole #, voici la commande qui résoudra vos problèmes
sed '/^\#/d' monFichier > tt
mv tt monFichier
Et voici ce qui se passe
sed '/^\#/d' monFichierefface toutes les lignes débutant par#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.
Si vos commentaires commencent par la lettre c et un espace, il faudra utiliser
sed '/^c\ /d' monFichier > tt
mv tt monFichier
Et ainsi de suite!
Effacer des lignes de commentaire en haut d'un fichier
Dans d'autres cas, il se peut que les premières lignes du fichier correspondent à des commentaires, sans symbole particulier pour les distinguer. Ne vous inquiétez pas, ce n'est pas très compliqué non plus... Par exemple, pour retirer les 3 premières lignes, il suffit d'utiliser
sed '1,3d' monFichier > tt
mv tt myFile
Et c'est tout!
Convertir plusieurs fichiers d'un seul coup...
Si vous avez une centaine de fichiers à traiter, il faut utiliser la commande foreach. Par exemple, si vous voulez retirer toutes les lignes débutant par # dans tous les fichiers terminant par l'extension .dat, il faut utiliser
foreach file (*dat)
sed '/^\#/d' $file > tt
mv tt $file
end
Et voilà, c'est terminé. Même si vous avez un millier de fichiers, ça ne prendra que quelques secondes!
