[awk] Probleme sur le OR logique

Résolu
b.hamichi -  
 recupbob -
Bonjour,
J'ai un probleme sur le OR logique qui ne fonctionne pas, l'objectif c'est d'afficher un ZERO avant $5 ou $8 si l'un des deux est inferieur ou egale à 9, sinon, le contraine

awk '{if ($5 < 9 || $8 < 9) {print 0$5 0$8} else {print $5 " " $8} }' Monfichier

Cela ne fonctionne pas, je crois le probleme c'est bien le OU LOGIQUE (||), car si je fais la meme chose avec le ET LOGIQUE (&&), cela fonctionne parfaitement

awk '{if ($5 < 9 && $8 < 9) {print 0$5 0$8} else {print $5 " " $8} }' Monfichier

Merci de m'aider, je suis vraiment bloqué
Configuration: Linux Suse
Firefox 3.0

4 réponses

  1. b.hamichi
     
    Solution trouvé, Merci :)))))

    awk '{if ($5 <= 9 && $8 > 9) {print 0$5 " " $8} else if ($8 <= 9 && $5 > 9) {print $5 " " 0$8} else if ($8 <= 9 && $5 <= 9) {print 0$5 " " 0$8} else if ($8 > 9 && $5 > 9) {print $5 " " $8}}' Monfichier
    1
  2. recupbob
     
    je proposerais bien un tardif :
    awk '{if ($5<10) $5=0$5; if ($8<10) $8=0$8;print $5,$8}' Tonfichier
    1
  3. jipicy Messages postés 40842 Date d'inscription   Statut Modérateur Dernière intervention   4 898
     
    Salut,

    Et où est le problème ?

    Tu poses comme condition : si l'un des deux est inferieur ou egale à 9
    ce qui suppose donc justement que si UN des deux est inférieur et que l'autre non, ben les DEUX seront affichés précédé d'un ZERO, c'est ça ton problème ?
    0
  4. b.hamichi
     
    Bonjour jipicy,
    Enfaite, je veux avoir en sortie:
    Si $5 <= 9 alors print 0$5
    Si $8 <= 9 alors print 0$8
    enfaite si l'un ou l'autre est inferieur ou egale 9 afficher soit 0$5 OU 0$8, sinon, le contraire

    Merci
    0