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