[shell][awk] récupérer la valeur max d'une sortie?

récupérer la valeur max d'une sortie? [shell][awk] - Codes et scripts - Linux et OS Alternatifs

Marsh Posté le 20-10-2003 à 11:56:16    

désolé de squatter le forum comme ça :D
 
j'ai un répertoire dont le contenu est le suivant :
 
site1
site2
site3
site4
...
 
j'aimerais récupérer le chiffre le plus élevé, j'ai donc commencé par faire la ligne suivante :
 

Code :
  1. ls | grep -h "site" | awk '{field = substr($1, 5);print int(field)}'


 
ça me renvoit ça :
 
1
2
3
4
...
 
pas mal, je pourrais m'en sortir avec un ls -r, mais non car si j'ai des noms du genre site10, site11, ça me renvoit ça :
 
1
10
11
2
3
4
...
 
normal.
 
Existe t'il une fonction Max dans awk?

Reply

Marsh Posté le 20-10-2003 à 11:56:16   

Reply

Marsh Posté le 20-10-2003 à 11:57:38    

sort -n

Reply

Marsh Posté le 20-10-2003 à 11:59:56    

:8
 
je fais awk sort -n...?

Reply

Marsh Posté le 20-10-2003 à 12:01:26    

ls | tr -d site | sort -n | head -n 1 -

Reply

Marsh Posté le 20-10-2003 à 12:02:05    

oups boulette...
 
c'est plutôt ça :
 

Code :
  1. ls | grep -h "site" | awk '{field = substr($1, 5);print sort int(field)}' | sort -n


 
pardon bobuse j'avais pô vu ta réponse :D
 
j'essayais de le faire dans le awk, mais c'est vrai que c'est plus simple avec une commande supplémentaire, keskejsuiconmoa


Message édité par duch le 20-10-2003 à 12:03:20
Reply

Marsh Posté le 20-10-2003 à 12:05:01    

si tu veux que ce soit plus générique :

ls | tr -d [:alpha:] | sort -n | head -n 1 -


Message édité par bobuse le 20-10-2003 à 12:05:12
Reply

Marsh Posté le 20-10-2003 à 12:07:32    

j'adore ta soluce, je suis arrivé à ça (car j'ai d'autres fichiers dans le dossier) mais c'est mieux que le awk :
 
ls | grep -h "site" | tr -d site | sort -n -r | head -n 1 -
 question : le - à la fin il sert à quoi (ça marche sans)?

Reply

Marsh Posté le 20-10-2003 à 12:15:09    

le - a la fin sert à specifier a head qu'il doit prendre en entrée la sortie standard plutot qu'un fichier, mais ptet que ca marche sans ... ha oui :D
bon ben il sert à rien, qu'à faire poser des questions :D

Reply

Marsh Posté le 20-10-2003 à 12:16:07    

duch a écrit :

j'adore ta soluce, je suis arrivé à ça (car j'ai d'autres fichiers dans le dossier) mais c'est mieux que le awk :
 
ls | grep -h "site" | tr -d site | sort -n -r | head -n 1 -
 question : le - à la fin il sert à quoi (ça marche sans)?


 
Je sais pas si c'est mieux, mais c'est plus lisible ;)
Pasque moi, mes scripts awk, j'ai beau essayer de mettre des commentaires, ca me fout des migraines :/

Reply

Marsh Posté le 20-10-2003 à 12:19:51    

et le - à la fin, ça veut dire quoi?

Reply

Marsh Posté le 20-10-2003 à 12:19:51   

Reply

Marsh Posté le 20-10-2003 à 12:21:38    

En awk :

Code :
  1. ls | awk '/site/ { sub ("site","",$0); if($0>$m) $m=$0} END { print $m }'


 
Tu peux faire ça en perl aussi (ya surement plus joli) :

Code :
  1. perl -e 'for (<site*> ) { s/site//; $m=$_ if ($_>$m)} print $m'


Message édité par arsunik le 20-10-2003 à 12:25:04
Reply

Marsh Posté le 20-10-2003 à 12:23:40    

petit problème :
 
si je fais le résultat de ça +1, ça me renvois "11+1", normal c'est un string, comment le transformer en entier (c'est pour ça que j'avais un int dans mon awk)?

Reply

Marsh Posté le 20-10-2003 à 12:26:10    

man expr :/
expr '$TRUC + 1' (de mémoire)
 
pour le -, j'ai repondu ;)


Message édité par bobuse le 20-10-2003 à 12:26:46
Reply

Marsh Posté le 20-10-2003 à 12:26:41    

duch a écrit :

petit problème :
 
si je fais le résultat de ça +1, ça me renvois "11+1", normal c'est un string, comment le transformer en entier (c'est pour ça que j'avais un int dans mon awk)?


 
expr 11 + 1
 
edit: rha grilled :/


Message édité par arsunik le 20-10-2003 à 12:27:03
Reply

Marsh Posté le 20-10-2003 à 12:29:07    

petite mise au point :
 
je suis une buse en shell. Je pourrais faire man expr, si je savais que le commande existe. Malheurement, ce n'est pas ma formation mais on me demande d'essayer de bricoler des scripts shells, donc je me débrouille comme je peux.
 
Merci à vous
 
 
 
j'trouve pas où tu as répondu pour le moins?!?


Message édité par duch le 20-10-2003 à 12:30:04
Reply

Marsh Posté le 20-10-2003 à 12:36:26    

ok ;)
You're welcome !
a+ [:zion]
 
http://forum.hardware.fr/forum2.ph [...] t=#t341982


Message édité par bobuse le 20-10-2003 à 12:37:18
Reply

Marsh Posté le 20-10-2003 à 15:26:29    

oups, j'l'avais pô vu merci :D

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed