View previous topic :: View next topic |
Author |
Message |
dapsaille Advocate
Joined: 02 Aug 2004 Posts: 2366 Location: Paris
|
Posted: Wed Feb 06, 2008 5:07 pm Post subject: [AWK] Tester une variable interne à awk (resolu) |
|
|
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
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 |
|
|
geekounet Bodhisattva
Joined: 11 Oct 2004 Posts: 3772 Location: Wellington, Aotearoa
|
Posted: Wed Feb 06, 2008 5:18 pm Post subject: |
|
|
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 |
|
|
Bapt Veteran
Joined: 14 Apr 2003 Posts: 1152 Location: Paris
|
Posted: Wed Feb 06, 2008 5:20 pm Post subject: |
|
|
Et un chaton en moins
sinon pour ta question :
Code: | awk '{ if ($2 > 90) {print $1,$2}}' source |
|
|
Back to top |
|
|
loopx Advocate
Joined: 01 Apr 2005 Posts: 2787 Location: Belgium / Liège
|
|
Back to top |
|
|
dapsaille Advocate
Joined: 02 Aug 2004 Posts: 2366 Location: Paris
|
Posted: Wed Feb 06, 2008 5:29 pm Post subject: |
|
|
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 |
|
|
Bapt Veteran
Joined: 14 Apr 2003 Posts: 1152 Location: Paris
|
Posted: Wed Feb 06, 2008 5:32 pm Post subject: |
|
|
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 |
|
|
dapsaille Advocate
Joined: 02 Aug 2004 Posts: 2366 Location: Paris
|
Posted: Wed Feb 06, 2008 6:00 pm Post subject: |
|
|
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 |
|
|
Bapt Veteran
Joined: 14 Apr 2003 Posts: 1152 Location: Paris
|
Posted: Wed Feb 06, 2008 6:15 pm Post subject: |
|
|
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 |
|
|
truc Advocate
Joined: 25 Jul 2005 Posts: 3199
|
Posted: Wed Feb 06, 2008 8:53 pm Post subject: |
|
|
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 |
|
|
dapsaille Advocate
Joined: 02 Aug 2004 Posts: 2366 Location: Paris
|
Posted: Thu Feb 07, 2008 10:22 am Post subject: |
|
|
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 |
|
|
truc Advocate
Joined: 25 Jul 2005 Posts: 3199
|
Posted: Thu Feb 07, 2008 4:41 pm Post subject: |
|
|
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 |
|
|
dapsaille Advocate
Joined: 02 Aug 2004 Posts: 2366 Location: Paris
|
Posted: Thu Feb 07, 2008 10:59 pm Post subject: |
|
|
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 |
|
|
geekounet Bodhisattva
Joined: 11 Oct 2004 Posts: 3772 Location: Wellington, Aotearoa
|
Posted: Thu Feb 07, 2008 11:11 pm Post subject: |
|
|
Que de chatons sauvés, je suis ravi |
|
Back to top |
|
|
Bapt Veteran
Joined: 14 Apr 2003 Posts: 1152 Location: Paris
|
Posted: Fri Feb 08, 2008 7:17 am Post subject: |
|
|
@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 |
|
|
truc Advocate
Joined: 25 Jul 2005 Posts: 3199
|
Posted: Fri Feb 08, 2008 10:08 am Post subject: |
|
|
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 |
|
|
|