[awk] Probleme sur le OR logique

Résolu
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. 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
    1. je proposerais bien un tardif :
      awk '{if ($5<10) $5=0$5; if ($8<10) $8=0$8;print $5,$8}' Tonfichier
      1
      1. Modérateur
        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
        1. 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