Probleme de boucle KSH avec awk...
bulukman
-
bulukman -
bulukman -
Problème avec boucle et awk
Bonjour tout le monde,
Dans un script shell (ksh) qui lance d'autres programmes type SAS..., je cherche à faire une boucle sur plusieurs listes.
Je m'explique: j'ai deux listes:
liste1="pierre paul jacques"
liste2="fichier1 fichier2 fichier3"
et je voudrais boucler sur les éléments de ces deux listes un par un du genre:
i=1
nb=`echo "$liste1" |wc -w` # nombre d'éléments dans les listes
while [ "$i" -le "$nb" ]
do
var=`echo "$liste1" | awk '{print $i }'`
fichier=`echo "$liste2" | awk '{print $i }'`
lancement d'un autre programme avec comme paramètre $var et $fichier...
done
J'essaie pour l'instant d'utiliser awk mais ce n'est peut être pas la meilleure solution.
Si vous avez des commentaires ou la solution, je suis preneur.
Un grand merci d'avance,
Eric
Bonjour tout le monde,
Dans un script shell (ksh) qui lance d'autres programmes type SAS..., je cherche à faire une boucle sur plusieurs listes.
Je m'explique: j'ai deux listes:
liste1="pierre paul jacques"
liste2="fichier1 fichier2 fichier3"
et je voudrais boucler sur les éléments de ces deux listes un par un du genre:
i=1
nb=`echo "$liste1" |wc -w` # nombre d'éléments dans les listes
while [ "$i" -le "$nb" ]
do
var=`echo "$liste1" | awk '{print $i }'`
fichier=`echo "$liste2" | awk '{print $i }'`
lancement d'un autre programme avec comme paramètre $var et $fichier...
done
J'essaie pour l'instant d'utiliser awk mais ce n'est peut être pas la meilleure solution.
Si vous avez des commentaires ou la solution, je suis preneur.
Un grand merci d'avance,
Eric
A voir également:
- Probleme de boucle KSH avec awk...
- Xiaomi s'éteint tout seul et se rallume en boucle - Forum Xiaomi
- Boucle excel sans macro - Forum Excel
- Mon pc s'allume et s'éteint en boucle ✓ - Forum Matériel & Système
- Awk gsub ✓ - Forum Shell
- Vlc lire en boucle ✓ - Forum Lecteurs et supports vidéo
6 réponses
et qu'avec awk:
awk 'BEGIN{n=split(l1,t1) ; split(l2,t2)} ; END{for(i=0;i<n;i++)print t1[i], t2[i]}' l1="$liste1" l2="$liste2" < /dev/null
awk 'BEGIN{n=split(l1,t1) ; split(l2,t2)} ; END{for(i=0;i<n;i++)print t1[i], t2[i]}' l1="$liste1" l2="$liste2" < /dev/null
Merci pour la réponse, mais de cette façon là, pour la variable 1 de la liste 1, il va passer toute la liste des fichiers de la liste2 alors que je ne veux passer pour la var 1 qu'avec le fichier 1.
Avec des tableaux:
liste1="pierre paul jacques"
liste2="fichier1 fichier2 fichier3"
set -A nom $liste1
set -A fich $liste2
i=0
nb=`echo "$liste1" |wc -w` # nombre d'éléments dans les listes
while [ $i -lt $nb ]
do
var=nom[$i]
fichier=fich[$i]
echo $var $fichier
done
liste1="pierre paul jacques"
liste2="fichier1 fichier2 fichier3"
set -A nom $liste1
set -A fich $liste2
i=0
nb=`echo "$liste1" |wc -w` # nombre d'éléments dans les listes
while [ $i -lt $nb ]
do
var=nom[$i]
fichier=fich[$i]
echo $var $fichier
done
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Merci de nouveau.
J'ai aussi fouillé de mon côté et je viens de trouver une autre méthode avec awk:
liste1="pierre paul jacques"
liste2="fichier1 fichier2 fichier3"
i=0
nb=`echo "$liste1" |wc -w` # nombre d'éléments dans les listes
while [ $i -lt $nb ]
do
var=`echo "$liste1" | awk '{print $'$i'}' `
fichier=`echo "$liste2" | awk '{print $'$i'}' `
echo $var $fichier
done
Un grand merci pour votre aide et votre réactivité,
Ce forum est vraiment ****
J'ai aussi fouillé de mon côté et je viens de trouver une autre méthode avec awk:
liste1="pierre paul jacques"
liste2="fichier1 fichier2 fichier3"
i=0
nb=`echo "$liste1" |wc -w` # nombre d'éléments dans les listes
while [ $i -lt $nb ]
do
var=`echo "$liste1" | awk '{print $'$i'}' `
fichier=`echo "$liste2" | awk '{print $'$i'}' `
echo $var $fichier
done
Un grand merci pour votre aide et votre réactivité,
Ce forum est vraiment ****