bonsoir à tous
je me suis écrit une fonction qui ne me satisfait pas trop
j'utilise des fichiers intermédiaires tmp avec sort et uniq
auriez-vous une meilleure solution (en bash) ?
remarque les xi sont des chaines quelconque pouvant comporter des espaces
function tri_chaine { # recoit $1 x1;x2;x3;.....xn
# renvoie une chaine y1;y2;y3....yn
# ce sont les xi mais tous différents et triés alphabétiquement
# on doit pouvoir faire plus simple !!!! ?
# écrire chaque terme de $1 dans tmp2.txt
tmp2=/tmp/tmp2.txt
rm ${tmp2} 2>/dev/null
( IFS=";" list=($1) ; \
for i in ${!list[@]} ; \
do echo ${list[$i]} >> ${tmp2} ; \
done \
)
# tri et suppression des doublons ,résultat dans tmp1.txt
tmp1=/tmp/tmp1.txt
sort ${tmp2} | uniq > ${tmp1}
# reconstruire la chaine en lisant le fichier tmp1.txt
chaine=""
while read ligne
do
chaine="${chaine}${ligne};"
done < ${tmp1}
# envoyer le résultat
echo "$chaine"
}