Bonjour à tous,
j'ai un probleme que j'arrive pas à resoudre. j'ai une liste de chaines de caracteres ( a b c d e) , cette liste correspond à une deuxieme liste d'entiers (5 2 1 3 4) ie a --5 , b --2 , c--1,...., je veux ecrire une fonction qui renvoie la liste de chaines ordonnés ie (c b d e a).
Si quelqu'un a une idée , comme je ne maitrise pas bien le shell, j'avoue que c'est délicat .
Amicalement
# Hash
Posté par Cheneson Cyril . Évalué à 1.
je n ai pas essayer mais ca peut peut-etre t aider - C est aussi en rapport avec le thread que tu as poste avant sur le hash en shell
http://open.itworld.com/5040/nls_unix_arrays060817/page_1.ht(...)
@++
Cyril
# Tu veux qu'on fasse tes devoirs a ta place ?
Posté par totof2000 . Évalué à 3.
# un tri ?
Posté par ecid . Évalué à 1.
Si tu peux éviter le tout ksh, tu pourrais peut-être utiliser sort ? genre echo "${a} a\n${b} b" | sort -n
Je ne sais pas ce que tu entends vraiment par renvoie de la liste de chaines ordonnées.
Sinon, il faut coder un algo de tri en ksh (bubble sort, quicksort ... ça dépend de toi)
[^] # Re: un tri ?
Posté par loic_1174 . Évalué à 1.
mais je suis contraint de coder en shell (KSH) ce script vu les normes du client.
une question y'a moyen de parcourir un tableau mais via ses indices.
comme une boucle for simple quoi ,genre
for (i =0; i<10; i++) {
tab[i]=$i
}
c'est simple mais compliquer à le faire en shell , vu qu'on ne peut parcourir que les valeurs memes du tableau
[^] # Re: un tri ?
Posté par ecid . Évalué à 1.
(pas de awk, sort, sed, tr, cut et autre ?). Gloups !!
C' est quoi comme KSH ? KSH93 ?
Parce que seul ksh93 gère les tableaux associatifs me semble-t-il, et ce serait plutôt ce qu'il te faudrait.
Essaye ksh93 arrays sur google, les premiers liens sont très utiles.
# Tu peux essayer ça dans un script
Posté par Stephane Autret . Évalué à 1.
tri_tab() {
liste1=($1)
liste2=($2)
i=0
liste_res=(`while [ $i -lt ${#liste1[*]} ]
do
echo ${liste2[$i]} ${liste1[$i]}
let i+=1
done | sort | awk '{print $2}'`)
echo "${liste_res[*]}"
}
tableau1=(a b c d e)
tableau2=(5 2 1 3 4)
tri_tab "${tableau1[*]}" "${tableau2[*]}"
Suivre le flux des commentaires
Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.