[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é
A voir également:

4 réponses

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
recupbob
 
je proposerais bien un tardif :
awk '{if ($5<10) $5=0$5; if ($8<10) $8=0$8;print $5,$8}' Tonfichier
1
jipicy Messages postés 40842 Date d'inscription   Statut Modérateur Dernière intervention   4 896
 
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
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