2010-04-08 122 views
0

每月创建4或5个文本文件。文件中的数据被拉入MS Access并用于邮件合并。使用for或while循环

每个文件都包含一个标题。这是一个例子: HEADER | 0000000130 | 0000527350 | 0000171250 | 0000058000 | 0000756600 | 0000814753 | 0000819455 | 100106

的第二字段是包含在文件中的记录(不包括标题行)的数目。最后一个字段是yymmdd格式的日期。

使用GAWK(Windows版),我已经做了好与重排/修改数据,写这一切到一个新的文件导入到Access除了以下。

我正在尝试为每条记录创建一个唯一的ID号。身份证号码的格式为1mmddyyXXXX,其中XXXX是一个数字,填充了前导零。使用上面的头,输出文件中的第一条记录将获得ID号码10106100001和最后一条记录将得到ID 10106100130.

我试过把第二个字段放到变量中,重新排列最后一个标题字段转换为所需的日期格式,然后用“for”语句循环来追加ID的XXXX部分,然后用printf输出它,但到目前为止,我已经完全垃圾了。

感谢您的帮助! 加里

回答

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',因为您不计算标题记录。 – 2010-04-08 20:19:35

+0

谢谢你们两位!像往常一样,我让解决方案比现在更困难。 – Gary 2010-04-09 00:48:24