Remplacer une ligne avec une variable incrémentale

madavekia Messages postés 34 Statut Membre -  
zipe31 Messages postés 34620 Date d'inscription   Statut Contributeur Dernière intervention   -
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. zipe31 Messages postés 34620 Date d'inscription   Statut Contributeur Dernière intervention   6 501
     
    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} 
    
    $
    ;-))
    0
  2. madavekia Messages postés 34 Statut Membre
     
    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
    0
    1. zipe31 Messages postés 34620 Date d'inscription   Statut Contributeur Dernière intervention   6 501
       
      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/}"
      0