Remplacer une ligne avec une variable incrémentale

Bonjour,

Je voudrais remplacer avec SED une ligne dans une fichier texte et qui est la suivante :

Release: 0%{?dist}

par :

Release: R$x%{?dist}

sachant qu'a chaque fois que je lance mon script la valeur de x est incrémentée de +1 , donc j'aurais comme sortie :

Release: R1{?dist}

Je vous remercie d'avance

2 réponses

  1. Contributeur
    Salut,

    $ cat plop 
    Bonjour,
    
    Je voudrais remplacer avec SED une ligne dans une fichier texte et qui est la suivante :
    
    Release: 0%{?dist} 
    
    $ x=1
    
    $ sed '/^\(Release: \)[^%]*\(.*\)/{s//\1R'"${x}"'\2/}' plop 
    Bonjour,
    
    Je voudrais remplacer avec SED une ligne dans une fichier texte et qui est la suivante :
    
    Release: R1%{?dist} 
    
    $ x=2
    
    $ sed '/^\(Release: \)[^%]*\(.*\)/{s//\1R'"${x}"'\2/}' plop 
    Bonjour,
    
    Je voudrais remplacer avec SED une ligne dans une fichier texte et qui est la suivante :
    
    Release: R2%{?dist} 
    
    $
    ;-))
    1. Tout d'abord merci pour ta réponse.

      Tu incrémentes tout seul le x ou c'est le sed qui le fait ?
      sed: -e expression n°1, caractère 39: caractères inutiles après la commande , c'est le message que j'ai en sortie
      1. Contributeur
        Non sed ne fait pas d'incrémentation. Comme tu parlais de script (sachant qu'a chaque fois que je lance mon script la valeur de x est incrémentée de +1 , ) je croyais que la commande sed faisait partie d'une boucle d'où étaient extraite la variable ;-\

        Pour l'erreur copies/colles ta commande, tu dois avoir oublié une quote ;-(

        Pour te faciliter la vie, mets des quotes doubles autour de la synatxe de sed :

        sed "/^\(Release: \)[^%]*\(.*\)/{s//\1R${x}\2/}"