max et min d'une colonne de données && arithmétique flottante [SHELL] - Shell/Batch - Programmation
Marsh Posté le 20-05-2003 à 13:31:37
++Taz a écrit : tu veux un petit script python? |
ben pkoi pas, mais bon, j'aurai prefere une solution plus "directe"
Marsh Posté le 20-05-2003 à 13:50:12
FD=open('echantillon') |
Marsh Posté le 20-05-2003 à 14:00:27
mouaif bon finalement, je garde mon sort/gawk
et pour mes operations arithmetique flottante, je vais y aller a coup de perl
Marsh Posté le 20-05-2003 à 14:55:59
bon ben en fait j'ai rusé pour pas appeler perl juste pour un division ... je passe par gawk :
|
et hop
pour ceux qui aiment pas les pipe :
|
Marsh Posté le 20-05-2003 à 15:41:28
pour les opérations ismples, tu gagneras de la vitesse avec expr
Marsh Posté le 20-05-2003 à 15:56:44
++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
Marsh Posté le 20-05-2003 à 16:43:00
ReplyMarsh Posté le 22-05-2003 à 17:10:13
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.
Marsh Posté le 22-05-2003 à 17:18:36
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
Marsh Posté le 22-05-2003 à 17:22:33
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...
Marsh Posté le 22-05-2003 à 17:49:41
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 :
|
et ça marche nickel. (sauf avant l'édit, j'avais oublié un " )
Marsh Posté le 22-05-2003 à 18:32:21
Reply
Marsh Posté le 20-05-2003 à 11:28:50
Voila j'ai un fichier qui ressemble a ca :
# 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