awk: lecture d'un fichier par un autre fichier - Shell/Batch - Programmation
Marsh Posté le 19-10-2012 à 03:26:41
salut,
Code :
|
comme ça:
Code :
|
le formatage n'est pas respecté
Code :
|
parce que sur la ligne
Code :
|
0.053 >= 0.05
tu devrais vérifier tes fichiers de données.
Marsh Posté le 19-10-2012 à 08:18:41
Justement c'est normal. Le fichier est correct (sauf l'espace en trop).
Certaines valeurs sont en dehors des clous (c'est le cas de 36 TN0228 1) et donc elles doivent rester - -
Théoriquement ça devrait fonctionner mais pratiquement non
le FNR==NR permet de séparer la lecture du premier et du second fichier?
Marsh Posté le 19-10-2012 à 08:30:27
Petit complément si je ne met qu'une condition ( $6<=Min_t[$1])le script fonctionne mais dès que j'enchaine 2 conditions ou plus ($6<=Min_t[$1] && $6>=Max_t[$1]) cela ne fonctionne plus.
Il s'agit bien de && et non || car la valeur doit être comprise entre les 2 bornes du fichier seuil
Marsh Posté le 19-10-2012 à 13:50:54
Je viens de trouver....
L'identifiant commun n'était pas à la bonne place ....donc il ne trouvait rien de commun entre les 2 fichiers
Marsh Posté le 19-10-2012 à 15:16:09
Citation : la valeur doit être comprise entre les 2 bornes du fichier seuil |
pour effectuer la mise à jour, ou pour afficher sans rien changer ?
Marsh Posté le 19-10-2012 à 21:05:33
pour effectuer les MAJ
ça revient à : Min_T<=Valeur de $6>=Max_T alors on change la valeur de $4 et $5
Marsh Posté le 19-10-2012 à 22:13:42
ok, donc:
Code :
|
sinon valeur n'a quà être supérieur à valMax.
Marsh Posté le 20-10-2012 à 14:20:05
exact pour le code
et si les conditions ne sont pas remplies car val<min ou >max alors on ne change rien
Du coup je ne me sers pas de FNR==NR. On doit surement le mettre quand on travaille sur un fichier unique
Marsh Posté le 20-10-2012 à 19:43:34
Citation : Du coup je ne me sers pas de FNR==NR. |
Ça n'a aucun rapport.
Citation : On doit surement le mettre quand on travaille sur un fichier unique |
Justement, non !
Comparer FNR à NR permet de savoir quand la lecture du deuxième fichier débute, car FNR est alors réinitialisé, alors NR est encore incrémenté.
Quand on a plus de deux fichiers, on peut forcer la réinitialisation de NR à ce moment-là.
C'est quand même plus léger que de tester les noms des fichiers.
Marsh Posté le 21-10-2012 à 21:16:56
Ce qui signifie quand tu as 3 fichiers et tu appelles ton programme : prog.awk fichier1 fichier2 fichier3
tu mets ton FNR==NR en begin et ensuite tu mets tes conditions du fichier1, puis du fichier2 et du fichier3 et il attribue automatiquement chaque condition à chaque fichier ?
Marsh Posté le 21-10-2012 à 22:39:39
pas exactement, ça permet surtout de détecter le passage d'un fichier à un autre.
Marsh Posté le 18-10-2012 à 17:01:31
Bonjour
Je souhaite utiliser un fichier(appelé seuil) ayant des valeur min et max pour borner un autre fichier appelé typ_sp
Voici mon fichier seuil :
Marq minT MaxT MinR MaxR Al
1 0.8 0.93 0.02 0.05 A
2 0.01 0.3 0.02 0.9 Z
3 0.05 0. 25 0.02 0.08 ZR
.
Voici mon fichier typ_sp (la 1ère ligne, description des colonnes, n’est normalement pas dans le fichier)
N° Nom Marq A1 A2 Val_T Valeur_R
28 TN0228 1 G G 0.932 0.112
32 TN0228 1 - - 0.929 0.046
36 TN0228 1 - - 0.845 0.053
810 X2287 2 T T 0.793 0.105
816 X2287 2 - - 0.251 0.040
817 X2287 2 A A 0.000 0.728
Je souhaite avoir ceci
28 TN02F28 1 G G 0.932 0.112
32 TN02F28 1 A A 0.929 0.046
36 TN02F28 1 - - 0.845 0.053
06 X246287 2 T T 0.896 0.188
810 X246287 2 T T 0.793 0.105
816 X246287 2 Z Z 0.251 0.040
817 X246287 2 A A 0.000 0.728
Voici mon code. En théorie ça devrait fonctionner mais en pratique c'est autre chose....
Merci pour votre aide