KSH: affectation de plusieurs variables en même temps

Salut à tous,

je me pose une question et je n’arrive pas à trouver la réponse. Donc peut être que quelqu’un ici a la solution.

je cherche en ksh a affecter plusieurs variables simultanément avec le résultat d’une seule commande du style :

echo $chaine | sed « s/…(block1)…(block2)…(block3)…/\1 \2 \3/ » | read a b c

Ce que fait cette ligne c’est faire de l’extraction des 3 blocks de la chaine $chaine. Et puis c’est tout :frowning:
Ce que j’aimerais c’est qu’elle affecte le résultat dans les variables a, b et c.
ca permet d’éviter de taper trois fois la ligne sed pour affecter chaque variables:
a=echo $chaine | sed "s/.......\(block1\).....\(block2\).....\(block3)\.../\1/"
b=echo $chaine | sed "s/.......\(block1\).....\(block2\).....\(block3)\.../\2/"
c=echo $chaine | sed "s/.......\(block1\).....\(block2\).....\(block3)\.../\3/"

Quelqu’un aurait une solution pour affecter les trois variables simultanément avec le résultat d’un seul sed ?
Cela améliorerait les performance du script, qui sont critiques.

Merci de votre aide.

Je sais pas si ca peux se faire facilement en ksh. Par contre, un p’tit coup de AWK, et c’est reglé. Tu peux meme l’appeler dans ton script.

Ca ne répond pas exactement à ta question, mais c’est la seule solution que je connaisse : le faire en 2 temps en passant
par un tableau, ça évite au moins de faire x fois les sed


arr=($(echo "XX YY ZZ" | sed 's/\(..\) \(..\) \(..\)/\2 \1 \3/'))
a=${arr[0]}

Euh, printf?

$ printf "%d %s %s %s" 42 is the answser
42 is the answser

Ahah.

Tres bon :slight_smile:

Haha putain, il m’a fallu 3min pour piger, EXCELLENT :smiley:

ah oui tiens, pas fait gaffe :teehee:
Mais sinon, ça aide ou bien ?

Ok merci pour la réponse.

Par contre si tu peux coller ta commande en awk ça pourra toujours me servir un jour.

Merci.