Bonjour,
je suis nouveau, d'avance, excusez mes erreurs.
J'ai 2 fichiers plats en entrée.
La structure du fichier FIC1 est:
1 2 3 4 5 6
| Date (format : YYYY-MM-JJ)
Heure (format : HH:MM:SS)
Vendeur (nom char (50))
Feature (nom char (50))
QTY Total ( integer)
Qty Used (integer) |
La structure du fichier FIC2 est:
1 2 3 4 5 6 7 8 9 10
| Date (format : YYYY-MM-JJ)
Heure (format : HH:MM:SS)
Vendeur (nom char (50))
Feature (nom char (50))
Login (nom char (50))
libelle (value :"floating")
Version1 (value :"XX")
Version2 (value :"XX")
hostuser (nom char (50))
Name server (nom char (50)) |
Dans les 2 fichiers Tous les champs sont séparés par un "ESPACE".
Je m'oriente donc vers awk, mais sans succès pour le moment.
L'idée est de parcourir les 2 fichiers plats en entrée.
Si je trouve une ligne dans le FIC1 dont les 4 premiers champs sont identiques à ceux d'un enregistrement du fichier FIC2
Alors, écrire toutes les lignes de FIC2 correspondant à ces critères sachant qu'il peut y avoir plusieurs lignes commençant par les 4 premiers champs mais les champs 5 et suivant peuvent être différents.
J'ai cherché sur le net sans trouver ce que je voulais ou quelque chose d'approchant.
J'ai voulu m'orienter vers les commandes sort suivie d'un pipe suivie d'un join, mais je viens de voir
que le join d'Unix fait une jointure sur 1 et 1 seul champs commun dans les 2 fichiers.
En plus, pour trier un fichier, je dois mal m'y prendre car je n'y arrive pas.
j'ai bien sur trouvé une commande awk comme:
awk -F";" 'NR==FNR {a [$1]=$2;next}{if ($2 in a)print a[$2]";"$0; else print "not found"";"$0; }' file2 file1
Si quelqu'un peut m'expliquer comment avec cette ligne on les 2 fichiers file 1 et file 2 et qu'on teste si une ligne de l'un est dans l'autre,
alors, je suis vraiment preneur.
j'ai essayé ceci dans tous les sens mais sans succès; même en ajoutant BEGIN {OFS=FS=";"}Cela ne fonctionne pas soit avec erreur de syntaxe soit écrivant la même chose dans mes 2 fichiers en sortie.
Pour mes 2 fichiers de sortie, le codage est : awk -F";" -v of1=$FICSORTIE1 -v of2=$FICSORTIE2.
Ces 2 variables étant initialisées avant.
Je ne comprends vraiment pas comment cela fonctionne pour d'autres.
J'ai vraiment besoin d'aide.
Merci beaucoup par avance.
Partager