Shell: Remplacement chaine caractère

Résolu
Bonjour,

Je cherche a modifier une chaine de caractère en shell. Cette chaine de caractère débute et finie par deux occurrences de %. Je voudrais remplacer %chaine% par "$chaine"

En gros, voila une ligne que j'ai:

%MOT1%/%MOT2% > %MOT3%MOT4

et voila ce que je souhaite:

"$MOT1"/"$MOT2" > "$MOT3"MOT4
Configuration: Windows XP
Firefox 3.0.6

2 réponses

  • Votes
  • Date
  • Date décroissante
  1. Modérateur
    Salut,
    [rep]$ cat plop
    %MOT1%/%MOT2% > %MOT3%MOT4
    
    [rep]$ sed 's/\(%\)\(.[^%]*\)\(%\)/"$\2"/g' plop
    "$MOT1"/"$MOT2" > "$MOT3"MOT4
    
    [rep]$
    ;-))
    1. Merci Jipicy

      J'avais fait un truc qui marchait mais qui avais une sale tête!!
      Ton instruction est beaucoup plus belle!!

      Merci encore

      A++
  2. Modérateur
    Salut,

    Pour moi MOT4 est aussi une variable sinon ça ne rime pas avec la comparaison >
    1. Modérateur
      Salut,

      Non, il faut tenir compte juste que de :
      Je voudrais remplacer %chaine% par "$chaine"

      et pas de :
      Cette chaine de caractère débute et finie par deux occurrences de %.
      qu'il faut traduire je pense par ;
      Cette chaine de caractère débute et finie par une occurrence de %.

      ;-))
    2. Modérateur
      @jipicySalut,

      Ce n'était pas pour toi le message ;-))
    3. Modérateur
      @lami20jRe-

      Ce n'est pas forcément une comparaison, si ?

      PS. Mais il est vrai que le DOS c'est loin, très loin ;-(
    4. Modérateur
      @jipicyRe,

      Il me semblais un peu longue ta regex ;-))
      $ echo '%MOT1%/%MOT2% > %MOT3%MOT4'| sed 's/\(%\)\(.[^%]*\)\(%\)/"$\2"/g'
      "$MOT1"/"$MOT2" > "$MOT3"MOT4
      $ echo '%MOT1%/%MOT2% > %MOT3%MOT4'| sed 's/%\([^%]*\)%/"$\1"/g'
      "$MOT1"/"$MOT2" > "$MOT3"MOT4