[bash] existe-t-il un moyen de trouver le min et max dans...

Résolu
Swiss Knight Messages postés 1956 Date d'inscription   Statut Membre Dernière intervention   -  
Swiss Knight Messages postés 1956 Date d'inscription   Statut Membre Dernière intervention   -
Bonjour !

Existe-t-il un moyen simple en bash pour trouver le minimum et le maximum de nombres contenus dans une chaîne ?
Exemple :
$ A=78,99,12

Un truc qui retourne 12 comme minimum et 99 comme maxi ?


Mieux : un truc qui retourne la moyenne du min trouvé et du max trouvé, i.e. ici (99+12)/2
arrondi à l'entier le plus proche (bon en l'occurrence ce sera l'entier directement supérieur, mais si on faisait une division par 3 ce pourrait être différent)

Je n'ai pas trouvé de fonction de ce genre :
min(A)=12
max(A)=99
même dans bc.

Merci beaucoup !

A voir également:

3 réponses

dubcek Messages postés 18789 Date d'inscription   Statut Contributeur Dernière intervention   5 636
 
hello
awk sait faire
$ awk '{n=split($0, a, ","); asort(a); print int((a[1]+a[n])/2+.5)}' <<<"78,99,12"
56
$ 
2
Utilisateur anonyme
 
salut,
bash sait faire
for i in ${var//,/ }
do
   min=$((min?(min>i?i:min):i))
   max=$((max?(max<i?i:max):i))
done
echo "min: $min - max: $max - moy: $(((max+min)/2))"
min: 12 - max: 99 - moy: 55
2
Swiss Knight Messages postés 1956 Date d'inscription   Statut Membre Dernière intervention   110
 
:-)
Vos deux solutions fonctionnent très bien. J'ai encore beaucoup à apprendre.
Merci !

"Si vous ne pouvez expliquer un concept à un enfant de six ans, c'est que vous ne le comprenez pas complètement." -A. Einsten-
0