[awk] Probleme sur le OR logique

Résolu/Fermé
b.hamichi - 4 janv. 2009 à 11:41
 recupbob - 7 sept. 2011 à 17:07
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é

4 réponses

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
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 jeudi 28 août 2003 Statut Modérateur Dernière intervention 10 août 2020 4 896
4 janv. 2009 à 12:00
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
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