Csv 如何使用awk解析固定宽度(NACHA)文件格式?

Csv 如何使用awk解析固定宽度(NACHA)文件格式?,csv,parsing,awk,fixed-width,Csv,Parsing,Awk,Fixed Width,我的公司有一个问题:我们怀疑我们从一家应用服务提供商那里收到的用于从客户那里取款的信息是不正确的 我们有所有的ACH协议和法律混乱,所以我们使用ACH网络没有问题,而且我们没有收到银行的消息说事情出了问题,所以我们怀疑当根据销售信息建立文件时,它缺少一些交易,我们的服务提供商仍在收取这些交易的费用 我的任务:花几个月的时间对NACHA文件进行解密,找出从每位客户身上提取的内容以及存入我们账户的内容,然后通过Access/Excel将其与销售数据、银行对账单和其他信息进行比较。使用MySQL获取数

我的公司有一个问题:我们怀疑我们从一家应用服务提供商那里收到的用于从客户那里取款的信息是不正确的

我们有所有的ACH协议和法律混乱,所以我们使用ACH网络没有问题,而且我们没有收到银行的消息说事情出了问题,所以我们怀疑当根据销售信息建立文件时,它缺少一些交易,我们的服务提供商仍在收取这些交易的费用

我的任务:花几个月的时间对NACHA文件进行解密,找出从每位客户身上提取的内容以及存入我们账户的内容,然后通过Access/Excel将其与销售数据、银行对账单和其他信息进行比较。使用MySQL获取数据

在这一点上,awk(或类似的Linux命令行工具)是我拥有的工具;我不精通“实际”编程工具或实践,我更多的是系统和数据库管理员。我并不害怕弄脏我的手,我只是没有太多的编程经验来阅读这类东西,比如说,C

我的主要困难在于使用实际的NACHA文件格式:它有94个字符宽,字段只由它们的位置决定,没有分隔符。使用awk(在我以前的经验中)依赖于字段分隔符变量,它可以是空白或其他任何东西……但我一直没有成功地使用它通过position梳理字段。我需要使用类似awk的东西,因为每个文件中的记录类型不同,一个文件中有5种不同的行类型:1、5、6、8和9。类型1和9是外部组,带有标题信息,5和8是批次标题行。类型6行是详细信息。我最初的计划是将标题信息读入变量,然后在每一行上复制它,基本上将其反规范化为一个大表(或CSV,在此期间),每个事务有一条记录,与批次和日期的所有标题信息关联,因此:

 [transaction data1, data2],[batch data1, data2],[file info1, info2, etc] 
 [transaction data1, data2],[batch data1, data2],[file info1, info2, etc]
 [transaction data1, data2],[batch data1, data2],[file info1, info2, etc]
我倾向于建立一个能够持续进行这项工作的工具,因为它将成为我们每天/每周进行的数据监控的一部分


因此,如何使用awk或类似工具对NACHA文件进行反规范化?如果有更好的工具用于此项工作,我非常高兴听到这个消息。不幸的是,我在网上搜索时没有找到任何内容。

如果您查看gawk信息文件(
info gawk
),其中有一个部分称为“3.6读取固定宽度数据”。如果您正在使用gawk,它可能会提供您需要的信息

从该文件:

将输入记录拆分为固定宽度的字段是 通过将包含空格分隔的数字的字符串指定给 内置变量“FIELDWIDTHS”


有趣的是,您提供的NACHA格式链接指向一个显然可以用于您需要执行的任务的工具。你试过了吗?我知道。我引述:Parse-O-Matic for Business以一次性固定许可费的形式出售,并包含年度服务续订部分。一次性平板许可证的价格为1995.00美元,包括一年的升级和维护版本。要花上好几个小时才能拿到1995美元。啊,我明白了,我看到他们有一个免费版,但不是说它只用于非商业、非盈利用途…:-)杰出的非常感谢你指出这一点;我太沉迷于我所拥有的(不幸的是过时的)awk参考资料和在线查看脚本,以至于我从未查看过信息页面。