- Modifié
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
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"
}