2010-04-08 8 views
0

Каждый месяц создаются 4 или 5 текстовых файлов. Данные в файлах загружаются в MS Access и используются в почтовом ящике.Использование циклов while или while

Каждый файл содержит заголовок. Это пример: HEADER | 0000000130 | 0000527350 | 0000171250 | 0000058000 | 0000756600 | 0000814753 | 0000819455 | 100106

2-е поле число записей, содержащихся в файле (за исключением строки заголовка). Последнее поле - это дата в форме yymmdd.

Использование gawk (для Windows), я сделал нормально с перестановкой/изменением данных и записью всего этого в новый файл для импорта в Access, за исключением следующих.

Я пытаюсь создать уникальный идентификационный номер для каждой записи. Идентификационный номер имеет форму 1mmddyyXXXX, где XXXX - число, дополненное ведущими нулями. Используя вышеприведенный заголовок, первая запись в выходном файле получит идентификационный номер 10106100001, а последняя запись получит ID 10106100130.

Я попытался поместить второе поле в заголовке в переменную, переставив последнюю заголовок в нужный формат даты, а затем цикл с инструкциями «для», чтобы добавить часть XXXX идентификатора, а затем вывести его все с помощью printf, но до сих пор я был полным мусором.

Благодарим за помощь! gary

ответ

2

Вызов awk (1) с опцией "-F |" и используйте следующий оператор для установки идентификатора: id = sprintf ("1% 02d% 02d% 02d% 04d", substr ($ 9,3,2), substr ($ 9,5,2), substr ($ 9,1 , 2), NR)

+1

'NR - 1', так как вы не считаете запись заголовка. –

+0

Спасибо вам всем! Как обычно, я делал решение более сложным, чем было. – Gary