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

Résolu/Fermé
Signaler
Messages postés
1956
Date d'inscription
samedi 22 novembre 2008
Statut
Membre
Dernière intervention
27 juillet 2016
-
Messages postés
1956
Date d'inscription
samedi 22 novembre 2008
Statut
Membre
Dernière intervention
27 juillet 2016
-
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 !

3 réponses

Messages postés
18410
Date d'inscription
lundi 15 janvier 2007
Statut
Contributeur
Dernière intervention
18 janvier 2022
5 533
hello
awk sait faire
$ awk '{n=split($0, a, ","); asort(a); print int((a[1]+a[n])/2+.5)}' <<<"78,99,12"
56
$ 
2

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
Messages postés
1956
Date d'inscription
samedi 22 novembre 2008
Statut
Membre
Dernière intervention
27 juillet 2016
106
:-)
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