|
Publicité ' | |||||||||||||||||||||||
|
|
#1 |
|
Invité régulier
![]() Inscription : janvier 2009 Messages : 12 ![]() |
bonjour,
je suis confronté à un problème qui me dépasse complètement si je fais tourner cette commande: Code :
gawk '{ if ($2 == %y2%) print $1,$2}' coord2.txt > coord4.txt (je fais tourner mes commandes awk dans un fichier batch. par forcément très joli mais je ne sais pas faire autrement pour de tels scripts) j'ai bien en sortie un fichier avec une seule ligne si je le fais avec: Code :
gawk '{ if ($2 != %y2%) print $1,$2}' coord2.txt > coord4.txt mais si je le fais avec: Code :
gawk '{ if ($2 <= %y2%) print $1,$2}' coord2.txt > coord4.txt Code :
gawk '{ if ($2 >= %y2%) print $1,$2}' coord2.txt > coord4.txt Code :
gawk '{ if ($2 < %y2%) print $1,$2}' coord2.txt > coord4.txt Code :
gawk '{ if ($2 > %y2%) print $1,$2}' coord2.txt > coord4.txt Code :
gawk '{ if ($2 print $1,$2}' coord2.txt > coord4.txt merci d'avance seb |
|
|
01
|
|
|
#2 |
|
Membre Expert
![]() |
Aucune idée du pourquoi du comment, visiblement un problème d'interprétation sous Cygwin... ça marche évidemment bien sous Linux
Si tu n'as que des nombres positifs, tu peux éventuellement contourner avec une formulation du genre : Code :
gawk '{ if (int($2 / %y2%)) print $1,$2}' coord2.txt > coord4.txt à adapter en fonction du besoin : int(%y2% / $2) donne le résultat inverse (attention au zéro) int(($2-1) / %y2% correspond si $2 > %y2% cette fois (avec des nombres entiers) etc... C'est un peu du bricolage mais bon |
|
|
10
|
|
|
#3 | ||
|
Expert Confirmé Sénior
![]() Inscription : février 2008 Messages : 2 070 ![]() |
![]() awk ne connaît pas y2, si cette variable est définie dans l'interpréteur courant; il faut utiliser l'option -v de gawk. Je n'ai pas de CygWin, mais en gros : Code interpréteur GNU/linux :
|
||
|
|
11
|
|
|
#4 | |||||
|
Membre Expert
![]() |
Citation:
Exemple avec gawk pour windows (sans Cygwin donc) : Code :
|
|||||
|
|
10
|
|
|
#5 |
|
Invité régulier
![]() Inscription : janvier 2009 Messages : 12 ![]() |
Merci Alek-C! ca marche en passant avec "int"!
je pense aussi que c'est un problème d'interprétation par Cygwin d'une commande awk dans un fichier batch. mais je ne sais pas encore comment faire autrement. un jour... |
|
|
00
|
|
|
#6 |
|
Membre Expert
![]() |
En évitant de passer par Cygwin ? Il existe un port de awk (et d'autres outils gnu) pour windows qui marche très bien :
http://gnuwin32.sourceforge.net/ |
|
|
00
|
Copyright © 2000-2012 - www.developpez.com