Remplacer une ligne avec une variable incrémentale

Fermé
madavekia Messages postés 31 Date d'inscription mardi 10 novembre 2009 Statut Membre Dernière intervention 6 janvier 2015 - 7 août 2013 à 13:40
zipe31 Messages postés 36402 Date d'inscription dimanche 7 novembre 2010 Statut Contributeur Dernière intervention 27 janvier 2021 - 7 août 2013 à 15:07
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

A voir également:

2 réponses

zipe31 Messages postés 36402 Date d'inscription dimanche 7 novembre 2010 Statut Contributeur Dernière intervention 27 janvier 2021 6 415
7 août 2013 à 14:18
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
madavekia Messages postés 31 Date d'inscription mardi 10 novembre 2009 Statut Membre Dernière intervention 6 janvier 2015
7 août 2013 à 15:02
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
zipe31 Messages postés 36402 Date d'inscription dimanche 7 novembre 2010 Statut Contributeur Dernière intervention 27 janvier 2021 6 415
7 août 2013 à 15:07
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