Gentoo Forums
Gentoo Forums
Gentoo Forums
Quick Search: in
[AWK] Tester une variable interne à awk (resolu)
View unanswered posts
View posts from last 24 hours

 
Reply to topic    Gentoo Forums Forum Index French
View previous topic :: View next topic  
Author Message
dapsaille
Advocate
Advocate


Joined: 02 Aug 2004
Posts: 2366
Location: Paris

PostPosted: Wed Feb 06, 2008 5:07 pm    Post subject: [AWK] Tester une variable interne à awk (resolu) Reply with quote

Bonsoir ...

Je souhaiterais faire quelque chose de la forme suivante =

Source = texte valeur
traitement à effectuer = avoir en sortie texte valeur si valeur est supérieure à 90 (des fs en l'occurence)


hors je sèche ...
Code:

cat source | awk '{ if ($2 > 90) print $1,$2}'



Je ne comprend pas j'ai pourtant de la doc quiquivasbien (TM) mais j'ai le cerveau en compote si quelqu'un aurais un tuyau je suis preneur (je suis perdu au niveau de la syntaxe de awk principalement).

EDIT =HAHAHAHAHA en fait j'ai corrigé une type dans mon post .. j'ai retenté et cela fonctionne :p

merci à tous :wink:

non je ne chapotte pas de la casserolle


Last edited by dapsaille on Wed Feb 06, 2008 5:26 pm; edited 1 time in total
Back to top
View user's profile Send private message
geekounet
Bodhisattva
Bodhisattva


Joined: 11 Oct 2004
Posts: 3772
Location: Wellington, Aotearoa

PostPosted: Wed Feb 06, 2008 5:18 pm    Post subject: Reply with quote

Heu, donc c'est résolu en fait ? N'oublie pas le titre dans ce cas là ;)
Et vire ce cat inutile, awk peut prendre un fichier en paramètre ;)
Back to top
View user's profile Send private message
Bapt
Veteran
Veteran


Joined: 14 Apr 2003
Posts: 1152
Location: Paris

PostPosted: Wed Feb 06, 2008 5:20 pm    Post subject: Reply with quote

Et un chaton en moins
sinon pour ta question :
Code:
awk '{ if ($2 > 90) {print $1,$2}}' source
Back to top
View user's profile Send private message
loopx
Advocate
Advocate


Joined: 01 Apr 2005
Posts: 2787
Location: Belgium / Liège

PostPosted: Wed Feb 06, 2008 5:22 pm    Post subject: Reply with quote

c'est RESOLU alors 8)
_________________
Mon MediaWiki perso : http://pix-mania.dyndns.org
Back to top
View user's profile Send private message
dapsaille
Advocate
Advocate


Joined: 02 Aug 2004
Posts: 2366
Location: Paris

PostPosted: Wed Feb 06, 2008 5:29 pm    Post subject: Reply with quote

Bapt wrote:
Et un chaton en moins
sinon pour ta question :
Code:
awk '{ if ($2 > 90) {print $1,$2}}' source


+1 pour les chatons je modifie cela .. dans ma ligne j'ai au moins 8 pipes ... ca fait une portée complète cela ..

NOTA= ca faisait 2 heures au moins que j'était la dessus j'était mort de rire de me corriger et que cela fonctionne ...

c'est le Gentoo Spirit probablement :p
Back to top
View user's profile Send private message
Bapt
Veteran
Veteran


Joined: 14 Apr 2003
Posts: 1152
Location: Paris

PostPosted: Wed Feb 06, 2008 5:32 pm    Post subject: Reply with quote

dapsaille wrote:
+1 pour les chatons je modifie cela .. dans ma ligne j'ai au moins 8 pipes ... ca fait une portée complète cela.

Donne ta ligne, on pourra peut être t'aider à sauver des chatons tout en restant lisible...
Back to top
View user's profile Send private message
dapsaille
Advocate
Advocate


Joined: 02 Aug 2004
Posts: 2366
Location: Paris

PostPosted: Wed Feb 06, 2008 6:00 pm    Post subject: Reply with quote

Code:

do rsh $i df |grep .snapshot | awk '{print $5,$1}' | awk -F"%" '{print $1,$2}' | sort -nr | awk '{ if ($1 > 100) print $2,$1}' > /tmp/snaps_stats/snaps_$i


mon dieu quelle horreur en le relisant .. mais bon c'est fonctionnel ^^
Back to top
View user's profile Send private message
Bapt
Veteran
Veteran


Joined: 14 Apr 2003
Posts: 1152
Location: Paris

PostPosted: Wed Feb 06, 2008 6:15 pm    Post subject: Reply with quote

dapsaille wrote:
Code:

do rsh $i df |grep .snapshot | awk '{print $5,$1}' | awk -F"%" '{print $1,$2}' | sort -nr | awk '{ if ($1 > 100) print $2,$1}' > /tmp/snaps_stats/snaps_$i


mon dieu quelle horreur en le relisant .. mais bon c'est fonctionnel ^^


Code:
 do rsh $i df | awk '{ if ( /.snapshot/ ) { sub("%",""); if($5 > 100) {print $1,$5 }}}' | sort -nrk 2 > /tmp/snaps_stats/snaps_$i

Vite fait, peut certainement être amélioré, c'est lisible et ça sauve déjà pas mal de chaton :) Je pense que c'est aussi plus compréhensible (un petit commentaire du genre $5: pourcentage utilisé $1 device sub=substitution. Alors que dans le premier pour s'y retrouvé sur qui fait quoi c'est plus compliqué.

Le sort doit aussi pouvoir être mis dans la awk, mais la je ne connais pas.
Back to top
View user's profile Send private message
truc
Advocate
Advocate


Joined: 25 Jul 2005
Posts: 3199

PostPosted: Wed Feb 06, 2008 8:53 pm    Post subject: Reply with quote

Bapt wrote:
Code:
 do rsh $i df | awk '{ if ( /.snapshot/ ) { sub("%",""); if($5 > 100) {print $1,$5 }}}' | sort -nrk 2 > /tmp/snaps_stats/snaps_$i

Vite fait, peut certainement être amélioré, c'est lisible et ça sauve déjà pas mal de chaton :) Je pense que c'est aussi plus compréhensible (un petit commentaire du genre $5: pourcentage utilisé $1 device sub=substitution. Alors que dans le premier pour s'y retrouvé sur qui fait quoi c'est plus compliqué.

Le sort doit aussi pouvoir être mis dans la awk, mais la je ne connais pas.


on peut faire ça pour raccourcir un tout petit peu le bouzin:
Code:
awk '/.snaphot/{blabla}'


On peut effectivement faire le sort dans le awk via un pipe, mais c'est pas specialement plus lisible, à moins que tu voulais parler des fonctions internes de awk (style sort et asort?), si c'est le cas, je ne pense pas que ça soit une bonne idée, car, l'ordonnancement (ça doit se dire comme ça...) se faire sur un champ de chaque ligne et qu'il faudrait bidouiller avec les arrays ce qui ne promet vraiment pas d'être ni plus simple ni plus rapide...

EDIT: ça serait sympa d'avoir un exemple de ligne en entrée en sortie aussi, car là comme ça, sans se casser la tête c'est dur à imaginer... :)
_________________
The End of the Internet!
Back to top
View user's profile Send private message
dapsaille
Advocate
Advocate


Joined: 02 Aug 2004
Posts: 2366
Location: Paris

PostPosted: Thu Feb 07, 2008 10:22 am    Post subject: Reply with quote

Gné ... y'as du boulot pour comprendre vos modifs mais je vais regarder cela :p

Pour infos en entrée on as cela sortie du rsh =

/vol/data87/.snapshot 262144000 16728344 245415656 6% /vol/data87/.snapshot
/vol/data69/.snapshot 308700772 410662496 0 133% /vol/data69/.snapshot
/vol/data61/.snapshot 262144000 71864692 190279308 27% /vol/data61/.snapshot
/vol/data53/.snapshot 286051532 313011192 0 109% /vol/data53/.snapshot
Back to top
View user's profile Send private message
truc
Advocate
Advocate


Joined: 25 Jul 2005
Posts: 3199

PostPosted: Thu Feb 07, 2008 4:41 pm    Post subject: Reply with quote

Code:
awk '/\.snapshot/{ sub("%", "", $5); if ($5 > 100) print $1, $5}' | sort -rn -k 2

fin sauf faute de frappe ça devrait le faire
_________________
The End of the Internet!
Back to top
View user's profile Send private message
dapsaille
Advocate
Advocate


Joined: 02 Aug 2004
Posts: 2366
Location: Paris

PostPosted: Thu Feb 07, 2008 10:59 pm    Post subject: Reply with quote

truc wrote:
Code:
awk '/\.snapshot/{ sub("%", "", $5); if ($5 > 100) print $1, $5}' | sort -rn -k 2

fin sauf faute de frappe ça devrait le faire


Pinaise .. je testerais cela dès que je pourrais re-gentooiser .... CF = https://forums.gentoo.org/viewtopic-t-658550.html
Back to top
View user's profile Send private message
geekounet
Bodhisattva
Bodhisattva


Joined: 11 Oct 2004
Posts: 3772
Location: Wellington, Aotearoa

PostPosted: Thu Feb 07, 2008 11:11 pm    Post subject: Reply with quote

Que de chatons sauvés, je suis ravi :D
Back to top
View user's profile Send private message
Bapt
Veteran
Veteran


Joined: 14 Apr 2003
Posts: 1152
Location: Paris

PostPosted: Fri Feb 08, 2008 7:17 am    Post subject: Reply with quote

@truc J'avais laissé le if, car je trouvais ça plus lisibile pour quelqu'un qui débute en awk, mais en fait c'est très lisible sans le if

Sinon j'avais pas fait gaffe au \. dans la REGEX ...
Back to top
View user's profile Send private message
truc
Advocate
Advocate


Joined: 25 Jul 2005
Posts: 3199

PostPosted: Fri Feb 08, 2008 10:08 am    Post subject: Reply with quote

Bapt wrote:
Sinon j'avais pas fait gaffe au \. dans la REGEX ...


En même temps il ne nous avait si c'était un '.' ou un caractère qu'il "matchait" jusqu'a ce qu'il nous montre ses lignes initiales. donc voila! honte à lui!:p
_________________
The End of the Internet!
Back to top
View user's profile Send private message
Display posts from previous:   
Reply to topic    Gentoo Forums Forum Index French All times are GMT
Page 1 of 1

 
Jump to:  
You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot vote in polls in this forum