• # variations autour de sed

    Posté par . En réponse au message traiter des blocs de texte pour composer de gros documents flexibles. Évalué à 1. Dernière modification le 09 février 2022 à 13:55.

    cp \<template\> \<fichier\>
    sed -i -e 's:\<Nom_De_Champ_Dans_Le_Template\>:\<valeur qu'on veut\>:g' <fichier>
    

    ces commandes copient un template avec des pattern de champ à remplir, pour les substituer avec la commande sed directement dans le fichier (-i). Il est possible d'enchainer plusieurs options -e de sed, ou d'invoquer la commande plusieurs fois. L'option "g" des regex c'est pour appliquer la substitution plusieurs fois pour chaque ligne au cas où le pattern s'y trouverais plus d'une fois. En shell ça donnerait avec "" comme pattern à substituer:

    destinataire='Mme Michu'
    sed -i -e 's:<destinaire>:$destinataire:g' fichier
    

    Tu peux définir une variable et l'utiliser. Il serait possible de modifier la salutation dépendamment du genre: « Cher » ou « Chère » en utilisant la même commande sed avec un système de conditions...

    Bref c'est méga-scriptable. Et tu peux faire de trucs chouettes à partir des expressions rationnelles (regular expression, ou regex en Anglais), c'est puissant mais tu peux aussi juste te contenter de chercher et substituer des patterns fixes. Tu peux aussi utiler "sed -e substitution1 -e substitution2 -e stubstiution3 ... template >> doc" pour ajouter chaque template ajusté à la suite d'un document à partir d'une liste de template. Ou même jouer avec des variable shells globales.