Forum Programmation.shell Changer l'ordre de mes paramètres de fonction

Posté par  .
Étiquettes : aucune
0
17
mar.
2009
Bonjour,

je cherche à utiliser sed pour changer l'ordre de mes paramètres de fonction

Exemple: foo($bar,$plop,$toto)
doit devenir: foo($toto,$bar,$plop)

Mon idée aurait été de faire
sed 's/foo(\(.*\),\(.*\),\(.*\))/foo($3,$1,$2)/'

Sed détecte bien le patern mais je me retrouve bel et bien avec foo($3,$1,$2) et non pas foo($toto,$bar,$plop)

Comment faire pour que sed remplisse la valeur de chaque $ ??

Merci d'avance

Uld


PS: je ne cherche à faire ca qu'avec sed, il se peut que d'autre solution plus simple plus esthétiques existent, je ne doute pas de vous, mais seules les solutions basées sur sed m'interressent.
  • # Bah oui

    Posté par  . Évalué à 3.

    C'est \3 et pas $3 qu'il faut mettre :)
    • [^] # Re: Bah oui

      Posté par  . Évalué à 1.

      Ah, bcp mieux!!

      Merci ffx
  • # Le dernier devient le premier...

    Posté par  (site web personnel) . Évalué à 2.

    Un peu plus général,
    ~ $ echo 'foo(tata,titi,toto,tutu)--pasfoo(1,2,3)--foo(pif,paf)' | \
      sed -e 's/\<foo(\([^)]*\),\([^,)]*\))/foo(\2,\1)/g'
    foo(tutu,tata,titi,toto)--pasfoo(1,2,3)--foo(paf,pif)

Suivre le flux des commentaires

Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.