2010-04-08 9 views
0

Chaque mois, 4 ou 5 fichiers texte sont créés. Les données dans les fichiers sont tirées dans MS Access et utilisées dans un mailmerge.Utilisation des boucles for ou while

Chaque fichier contient un en-tête. Voici un exemple: HEADER | 0000000130 | 0000527350 | 0000171250 | 0000058000 | 0000756600 | 0000814753 | 0000819455 | 100106

Le 2ème champ est le nombre d'enregistrements contenus dans le fichier (à l'exception de la ligne d'en-tête). Le dernier champ est la date au format yymmdd. En utilisant gawk (pour Windows), j'ai bien fait de réarranger/modifier les données et d'écrire tout cela dans un nouveau fichier pour l'importer dans Access sauf pour ce qui suit. J'essaie de créer un numéro d'identification unique pour chaque enregistrement. Le numéro d'identification a la forme 1mmddyyXXXX, où XXXX est un nombre, complété par des zéros. En utilisant l'en-tête ci-dessus, le premier enregistrement dans le fichier de sortie obtiendrait le numéro d'identification 10106100001 et le dernier enregistrement obtiendrait l'ID 10106100130.

J'ai essayé de mettre le deuxième champ dans l'en-tête dans une variable, en réarrangeant le dernier En-tête dans le format de date requis, puis en boucle avec "for" déclarations d'ajouter la partie XXXX de l'ID, puis en sortie tout avec printf mais jusqu'à présent, j'ai été complète des ordures à elle.

Merci pour votre aide! gary

Répondre

2

Appelez awk (1) avec l'option "-F |" et utilisez l'instruction suivante pour définir l'identificateur: id = sprintf ("1% 02d% 02d% 02d% 04d", substr ($ 9,3,2), substr ($ 9,5,2), substr ($ 9,1 , 2), NR)

+1

'NR-1' puisque vous ne comptez pas l'enregistrement d'en-tête. –

+0

Merci à vous deux! Comme d'habitude, je rendais la solution plus difficile qu'elle ne l'était. – Gary

Questions connexes