Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
3590 connectés 

  FORUM HardWare.fr
  Programmation
  Shell/Batch

  [SHELL] max et min d'une colonne de données && arithmétique flottante

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[SHELL] max et min d'une colonne de données && arithmétique flottante

n°400964
bobuse
Posté le 20-05-2003 à 11:28:50  profilanswer
 

Voila j'ai un fichier qui ressemble a ca :
 

Citation :

# debit | SNR | refFrame
14296 23.31 12
14416 23.37 13
14256 23.38 14
14352 23.38 15
14392 23.30 16
14400 23.33 17
14400 23.37 18
14320 23.30 19
14568 23.31 20
14840 23.37 21
14656 23.30 22
14464 23.33 23
14760 23.33 24

 
 
et je voudrai obtenir le max et le min de la deuxieme colonne.
 
J'ai donc pensé a sort, ca me donne


min=sort -k 2,2 fichier.dat | gawk '{n++; if (n==1) print $2}'
max=sort -r -k 2,2 fichier.dat | gawk '{n++; if (n==2) print $2}'


 
ca marche, mais bon je suis encore novice et je connais pas toutes les bonnes ficelles du shell, donc si quelqu'un a une autre méthode je suis interessé ... :)
 
2eme question : comment effectuer une operation simple avec des réels  :??: du genre 2.5/7 ... expr n'utilise que des entiers et je vois pas autre chose  :(


Message édité par bobuse le 20-05-2003 à 16:43:30

---------------
get amaroK plugin
mood
Publicité
Posté le 20-05-2003 à 11:28:50  profilanswer
 

n°401099
Taz
bisounours-codeur
Posté le 20-05-2003 à 12:59:14  profilanswer
 

tu veux un petit script python?

n°401158
bobuse
Posté le 20-05-2003 à 13:31:37  profilanswer
 

++Taz a écrit :

tu veux un petit script python?


ben pkoi pas, mais bon, j'aurai prefere une solution plus "directe"


---------------
get amaroK plugin
n°401204
Taz
bisounours-codeur
Posté le 20-05-2003 à 13:50:12  profilanswer
 

FD=open('echantillon')
 
FD.readline()
 
mini=maxi=FD.readline().split()[1]
 
for ligne in FD:
    x=ligne.split()[1]
    mini=min(x, mini)
    maxi=max(x, maxi)
 
print "max=%s min=%s" % (maxi, mini)

n°401217
bobuse
Posté le 20-05-2003 à 14:00:27  profilanswer
 

mouaif bon finalement, je garde mon sort/gawk [:spamafote]  
 
et pour mes operations arithmetique flottante, je vais y aller a coup de perl


---------------
get amaroK plugin
n°401275
Taz
bisounours-codeur
Posté le 20-05-2003 à 14:29:46  profilanswer
 

tu fait bien

n°401316
bobuse
Posté le 20-05-2003 à 14:55:59  profilanswer
 

bon ben en fait j'ai rusé pour pas appeler perl juste pour un division ... je passe par gawk :


echo $var1 $var2 | gawk '{print $1/$2}'  


et hop :D  
 
pour ceux qui aiment pas les pipe :


gawk 'BEGIN {print '$var1'/'$var2'}' -f /dev/null


Message édité par bobuse le 20-05-2003 à 14:59:03

---------------
get amaroK plugin
n°401398
Taz
bisounours-codeur
Posté le 20-05-2003 à 15:41:28  profilanswer
 

pour les opérations ismples, tu gagneras de la vitesse avec expr

n°401418
bobuse
Posté le 20-05-2003 à 15:56:44  profilanswer
 

++Taz a écrit :

pour les opérations ismples, tu gagneras de la vitesse avec expr


ben oui je sais, mais ce couillon marche qu'avec des entiers :/


---------------
get amaroK plugin
n°401482
Taz
bisounours-codeur
Posté le 20-05-2003 à 16:35:13  profilanswer
 

Citation :

arithmétique entière

   [:spamafote]

mood
Publicité
Posté le 20-05-2003 à 16:35:13  profilanswer
 

n°401509
bobuse
Posté le 20-05-2003 à 16:43:00  profilanswer
 

++Taz a écrit :

Citation :

arithmétique entière

   [:spamafote]  


[:neowen]


---------------
get amaroK plugin
n°401515
Taz
bisounours-codeur
Posté le 20-05-2003 à 16:44:56  profilanswer
 

:D

n°404779
gfive
Posté le 22-05-2003 à 17:10:13  profilanswer
 

Et..euuuh.. ça :  
 
min=sort -k 2,2 fichier.dat | head -1 | awk '{print $2}'
max=sort -k 2,2 fichier.dat | tail -1 | awk '{print $2}'
 
ça irait pas plus vite?? Disons que si ton fchier est gros, awk ne le parsera pas.

n°404798
Taz
bisounours-codeur
Posté le 22-05-2003 à 17:18:36  profilanswer
 

ouais fin awk de toutes façons, c'est pas ce qu'il y a de plus rapide...
 
autant ecrire un programme en nimporte quoi, ca va plus vite et ca tourne mieux

n°404808
gfive
Posté le 22-05-2003 à 17:22:33  profilanswer
 

bah, awk, ça marche très bien, pour peu qu'on s'en serve à bon escient (genre, pas sur des fichiers super énormes)...Par exemple, pour extraire le 2° champ de la ligne (ce que fait awk en l'occurence) c'est très bien...

n°404813
Taz
bisounours-codeur
Posté le 22-05-2003 à 17:31:05  profilanswer
 

et cut ça vous dit rien?

n°404841
gfive
Posté le 22-05-2003 à 17:49:41  profilanswer
 

Si, aussi, mais bon, je connais awk, et pas bien cut, alors quand j'ai des trucs de ce genre à faire, j'utilise awk.  
Par exemple, pour écrire dans un fichier :  
 
Valeur max = 23.38 totos
Valeur min = 23.30 totos, avec un seul parcours du fichier... Tu ferais comment???
 
moi, je fais ça :  
 
 

Code :
  1. awk 'BEGIN {min=1000; max=0} /^[^#]/ {if ($2 < min) {min=$2}; if (max < $2) {max=$2}} END {print "Valeur max = "max" totos\nValeur min = "min" totos"}' < fichier.dat

 
 
et ça marche nickel. (sauf avant l'édit, j'avais oublié un " )


Message édité par gfive le 22-05-2003 à 17:51:01
n°404927
bobuse
Posté le 22-05-2003 à 18:32:21  profilanswer
 

++Taz a écrit :

et cut ça vous dit rien?


non :o


---------------
get amaroK plugin

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  Shell/Batch

  [SHELL] max et min d'une colonne de données && arithmétique flottante

 

Sujets relatifs
[XML] Récupérer les données d'un fichier xml[SHELL Linux] Traiter la première ligne, et rebalancer le reste
[mysql] inserer des données provenant d'une autre tablePHP - Hébergement avec 1 ou X bases de données?
[Shell] Petit problème de grep[ PHP ] Remplacer une expression dans une base de données
probleme avec la fonction shell_exec()script qui recupere des données ds un fichier excel
[PHP] conversion de données (manipulations de string inside)[VB]Comment savoir si un programme dos lancé avec "Shell" est fini ??
Plus de sujets relatifs à : [SHELL] max et min d'une colonne de données && arithmétique flottante


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR