使用 for 或 while 循环
每个月都会创建 4 或 5 个文本文件。文件中的数据被拉入 MS Access 并用于邮件合并。
每个文件都包含一个标头。这是一个例子: HEADER|0000000130|0000527350|0000171250|0000058000|0000756600|0000814753|0000819455|100106
第二个字段是文件中包含的记录数(不包括标题行)。最后一个字段是 yymmdd 形式的日期。
使用 gawk(适用于 Windows),我已经完成了重新排列/修改数据并将其全部写入一个新文件以导入 Access 的操作,但以下内容除外。
我正在尝试为每条记录创建一个唯一的 ID 号。 ID 号的格式为 1mmddyyXXXX,其中 XXXX 是一个数字,并用前导零填充。使用上面的标头,输出文件中的第一条记录将获得 ID 号 10106100001,最后一条记录将获得 ID 10106100130。
我尝试将标头中的第二个字段放入变量中,将最后一个标头字段重新排列到所需的日期格式,然后使用“for”语句循环附加 ID 的 XXXX 部分,然后使用 printf 输出所有内容,但到目前为止我完全是垃圾。
感谢您的帮助! 加里
Every month, 4 or 5 text files are created. The data in the files is pulled into MS Access and used in a mailmerge.
Each file contains a header. This is an example:
HEADER|0000000130|0000527350|0000171250|0000058000|0000756600|0000814753|0000819455|100106
The 2nd field is the number of records contained in the file (excluding the header line). The last field is the date in the form yymmdd.
Using gawk (for Windows), I've done ok with rearranging/modifying the data and writing it all out to a new file for importing into Access except for the following.
I'm trying to create a unique ID number for each record. The ID number has the form 1mmddyyXXXX, where XXXX is a number, padded with leading zeros. Using the header above, the first record in the output file would get the ID number 10106100001 and the last record would get the ID 10106100130.
I've tried putting the second field in the header into a variable, rearranging the last header field into the required date format and then looping with "for" statements to append the XXXX part of the ID and then outputting it all with printf but so far I've been complete rubbish at it.
Thanks for your help!
gary
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
使用选项“-F |”调用 awk(1)并使用以下语句设置标识符:
id=sprintf("1%02d%02d%02d%04d", substr($9,3,2), substr($9,5,2), substr($9,1,2), NR)
Invoke awk(1) with the option "-F |" and use the following statement to set the identifier:
id=sprintf("1%02d%02d%02d%04d", substr($9,3,2), substr($9,5,2), substr($9,1,2), NR)