Forum des développeurs  

Le forum de référence en programmation et développement. Articles, cours et tutoriels du débutant au chef de projet et DBA confirmé.
Précédent   Forum des développeurs > Hardware, Systèmes et Logiciels > Linux > Applications > Shell

Shell Vos questions sur l'utilisation des commandes shell

Réponse
 
Outils de la discussion
Vieux 08/11/2008, 18h51   #1 (permalink)
Invité de passage
 
Date d'inscription: novembre 2008
Âge: 28
Messages: 7
Par défaut recherche une fonction shell

bonjour

je suis à la recherche d'une fonction ou une méthode pour chercher la valeur maximum dans un fichier ou il n'y a qu'une série de nombre à la ligne

c'est pour un script bash qui lit un fichier entre.dat

de la forme suivante

112
15475
212
78753
12574


je cherche donc une methode en bash qui me sortirais 78753 la valeur max du fichier dans une variable, ainsi que le nombre de ligne.

Merci d'avance.
astroflo est déconnecté   Envoyer un message privé Réponse avec citation
Vieux 08/11/2008, 20h58   #2 (permalink)
Membre chevronné
 
Avatar de Empty_body
 
Date d'inscription: mai 2004
Messages: 641
Par défaut

Salut,

Un truc comme ceci devrait marcher...

Code :
max=0
for ligne in `cat ./le_fichier`; do
# Vérification de la ligne pour être sur que ce soit un numérique
    if  [ $(echo $ligne | grep -v [a-Z] | wc -l) -eq 0 ]; then
# On teste si la ligne est plus grande que l'actuel maximum
          if  [[ $ligne -gt $max ]]; then
               max=$ligne
          fi
    fi
done
echo "Le maximum est : "$max
Bonne soirée et bonne chance.
__________________
Pourquoi vouloir ré-inventer la roue...
...Surtout si c'est pour la faire carrée...
Empty_body est déconnecté   Envoyer un message privé Réponse avec citation
Vieux 08/11/2008, 21h06   #3 (permalink)
Membre émérite
 
Date d'inscription: septembre 2006
Messages: 794
Par défaut

Citation:
Envoyé par astroflo Voir le message
bonjour

je suis à la recherche d'une fonction ou une méthode pour chercher la valeur maximum dans un fichier ou il n'y a qu'une série de nombre à la ligne

c'est pour un script bash qui lit un fichier entre.dat

de la forme suivante

112
15475
212
78753
12574


je cherche donc une methode en bash qui me sortirais 78753 la valeur max du fichier dans une variable, ainsi que le nombre de ligne.

Merci d'avance.
Code :
sort entre.dat | tail -n 1
JeitEmgie est déconnecté   Envoyer un message privé Réponse avec citation
Vieux 10/11/2008, 09h47   #4 (permalink)
Membre Confirmé
 
Date d'inscription: septembre 2007
Localisation: Genève
Âge: 45
Messages: 272
Par défaut

Un petit ajout au code de JeitEmgie. S'il est exact que le code sortirait le bon nombre avec l'exemple des données fournies, il suffirait d'y placer le nombre 8 pour poser un problème: le sort est alphabétique et non numérique, donc 8 sortirait au lieu de 78753. Après correction, le code devient:
Code :
sort -n entre.dat | tail -1
que l'on peut appliquer avec le fichier:
Code :
112
15475
212
78753
12574
8
jmelyn est déconnecté   Envoyer un message privé Réponse avec citation
Vieux 11/11/2008, 18h17   #5 (permalink)
Invité de passage
 
Date d'inscription: novembre 2008
Âge: 28
Messages: 7
Par défaut

Merci,

j'avais essayer le
[code]sort entree.dat | tail -n 1 /CODE]

et ca ne marchais pas donc merci bcp
astroflo est déconnecté   Envoyer un message privé Réponse avec citation
NEWS LINUX PROFESSIONNELFAQ LINUXTUTORIELS LINUXLIVRES LINUXLINUX TVUNIXGTK+QtAPACHE

Réponse

Précédent   Forum des développeurs > Hardware, Systèmes et Logiciels > Linux > Applications > Shell



Outils de la discussion

Règles de messages
Vous ne pouvez pas créer de nouvelles discussions
Vous ne pouvez pas envoyer des réponses
Vous ne pouvez pas envoyer des pièces jointes
Vous ne pouvez pas modifier vos messages

Les balises BB sont activées : oui
Les smileys sont activés : oui
La balise [IMG] est activée : oui
Le code HTML peut être employé : non
Trackbacks are non
Pingbacks are non
Refbacks are non
Navigation rapide