Rions un peu avec GNU sed

Au boulot, je suis le spécialiste de l'automatisation des tâches ; J'ai commencé très jeune d'ailleurs , et c'est ce qui fait de moi un bon administrateur système : je suis tellement paresseux que je suis toujours près à travailler très dur, pourvu que ça soit ponctuel et que ça m'évite des tâches fastidieuses par la suite.

Il existe des tas de langages de script pour aider les administrateurs. J'en utilise plusieurs, mais mon préféré, c'est bêtement les fichiers de commande, les fameux .BAT, dont on mésestime la puissance depuis les extensions de leurs possibilités avec Windows 2000.

Ceci dit, si on peut faire des merveilles juste avec une ligne de commande, quelques outils supplémentaires sont toujours agréables : Je peux programmer un .CMD[1]qui va aller me nettoyer les fichiers plus vieux qu'un certain nombre de jours, en lisant les dates des fichiers et avec la avec gestion du nombre de jours par mois, des années bissextiles, et tout le toutim, je l'ai fait d'ailleurs, juste pour voir si c'était possible dans un système n'incluant pas par défaut les outils appropriés. N'empêche que les outils appropriés, souvent, ils existent.

Du coup, j'ai une petite batterie d'utilitaires en ligne de commande pour envoyer des mails, manipuler du XML ou vérifier des différences entre fichiers. Parmi ces utilitaires, il y a GNU sed, qui permet de manipuler des fichiers texte, de faire des recherches et remplacements avec des expressions régulières et autres bidouillages marrants.

Par défaut, il lit le fichier d'origine et affiche le fichier modifié, mais il est possible de lui demander de modifier directement le fichier sur lequel on travaille. Je ne sais pas trop comment c'est programmé en interne sur chaque plateforme, mais dans l'interpréteur de commande de Windows, ça se passe à peu près comme ça :

  1. Lecture du fichier d'origine
  2. Sortie du fichier modifié dans un fichier temporaire
  3. Suppression du fichier d'origine
  4. Renommage du fichier temporaire avec le nom du fichier d'origine.

J'ai bien l'occasion de suivre tout ça, puisque des histoires de sécurité dans mon environnement empêchent régulièrement le programme d'arriver au bout et qu'il laisse traîner les fichiers temporaires quand une telle erreur se produit.

Les fichiers temporaires ont tous des noms de la même forme : le nom du programme en minuscules, puis une suite de six caractères aléatoires en majuscules, incrémentés lorsqu'on se retrouve avec plusieurs fichiers temporaires. Des noms comme ceux-ci :

  • sedDOSSUZ
  • sedDOSSVA
  • sedDOSSVB
  • etc.

Aléatoires ? Voire. Il m'a fallu un certain temps et un certain nombre de nettoyages pour me rendre compte que le premier fichier avait toujours le même nom, qu'après le nom du programme, la séquence dite aléatoire commençait en réalité toujours par la même :

DOSSUX[2]

Notes

[1] je préfère cette extension là quand j'écris du non compatible pré W2k.

[2] Et visiblemement, ça les amuse. :)

Commentaires

1. Le mercredi 3 septembre 2008, 13:05 par gilda

and what about windows serait-on tenté d'ajouter dans le même esprit ?

(j'avoue que je n'y aurais pas pensé en voyant juste les noms des fichiers sedDosxxx ).

2. Le mercredi 3 septembre 2008, 13:22 par Polytechnique

Alors même que chacun sait que c'est le meilleur OS de tous les temps.


j = i ^ 2470213434777;


C'est pas mieux comme ça ? :)

3. Le mercredi 3 septembre 2008, 13:48 par xave

Gilda> Quand on bosse en ligne de commande, Windows et Dos, c'est la même chose.

PollyMagoo> i ^ 2275569838918325, cf. ci-dessus.

Page top