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

  FORUM HardWare.fr
  Linux et OS Alternatifs
  Codes et scripts

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

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

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

n°341969
duch
Posté le 20-10-2003 à 11:56:16  profilanswer
 

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?

mood
Publicité
Posté le 20-10-2003 à 11:56:16  profilanswer
 

n°341970
bobuse
Posté le 20-10-2003 à 11:57:38  profilanswer
 

sort -n

n°341972
duch
Posté le 20-10-2003 à 11:59:56  profilanswer
 

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

n°341975
bobuse
Posté le 20-10-2003 à 12:01:26  profilanswer
 

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

n°341976
duch
Posté le 20-10-2003 à 12:02:05  profilanswer
 

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
n°341977
bobuse
Posté le 20-10-2003 à 12:05:01  profilanswer
 

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
n°341979
duch
Posté le 20-10-2003 à 12:07:32  profilanswer
 

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)?

n°341982
bobuse
Posté le 20-10-2003 à 12:15:09  profilanswer
 

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

n°341986
bobuse
Posté le 20-10-2003 à 12:16:07  profilanswer
 

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 :/

n°341990
duch
Posté le 20-10-2003 à 12:19:51  profilanswer
 

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

mood
Publicité
Posté le 20-10-2003 à 12:19:51  profilanswer
 

n°341992
arsunik
ma tuxitude me beastifie
Posté le 20-10-2003 à 12:21:38  profilanswer
 

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
n°341995
duch
Posté le 20-10-2003 à 12:23:40  profilanswer
 

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)?

n°341998
bobuse
Posté le 20-10-2003 à 12:26:10  profilanswer
 

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


Message édité par bobuse le 20-10-2003 à 12:26:46
n°342000
arsunik
ma tuxitude me beastifie
Posté le 20-10-2003 à 12:26:41  profilanswer
 

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
n°342003
duch
Posté le 20-10-2003 à 12:29:07  profilanswer
 

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
n°342007
bobuse
Posté le 20-10-2003 à 12:36:26  profilanswer
 

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
n°342057
duch
Posté le 20-10-2003 à 15:26:29  profilanswer
 

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


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Linux et OS Alternatifs
  Codes et scripts

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

 

Sujets relatifs
[shell] coment utiliser une variable dans un bloc << EOF ??Recuperer un fichier apres un rm ?
recupérer le contenu du presse-papier de X11 en ligne de com[ Shell/Bash ] Quelques commandes pour lancer une appli
suppression bureau etendu sur ecran et sortie tvSortie optique sous linux....
[linux] problème script shell : exit status[dialog] comment ajuster la taille des widgets au shell?
valeur md5sum iso mandrake 9.2rc2MDK 9.2 - Sortie au plus tard le 15 octobre !! Coup de gueule :p
Plus de sujets relatifs à : [shell][awk] récupérer la valeur max d'une sortie?


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