回答
Perl确实会做一份体面的工作。 awk脚本可能会更快,但语法可能不太明确(虽然与perl相比,也许这是不公平的)。
awk的语法比Perl更清晰。 – ghostdog74 2010-04-13 23:44:23
你也可以使用Python。它具有更清晰的语法,并且更易于编程。
Gawk会更好,它具有固定宽度字段的特定支持。 (查找FIELDWIDTHS变量。)
编写简单的规则来筛选出您将得到的垃圾也很容易。
这里有一个简单的脚本,只是给你从这份报告的“重要”线和可变映射您链接到:
BEGIN {
FIELDWIDTHS="4 4 7 5 1 7 1 1 23 4 10 2 1 2 8 1 6 1 4 1 6 1 2 1 2 1 2 1 4 2 10 1"
}
function cvt_amt(a) {
gsub(",", "", a);
amt = a * 1;
return amt;
}
function empty(s) {
gsub(" ", "", s);
return s == "";
}
/* skip garbage lines */
/----/ { next; }
/CASH RECEIPTS REPORT/ { next;}
/PERIOD ENTERED/ { next; }
/^ *$/ { next; }
($2 == "CUST") { next; }
($2 == "NO. ") { next; }
/CUSTOMER TOTALS/ { next; }
/GRAND TOTALS/ { next; }
/SUMMARY BY STATUS/ { nextfile; } /* end of stuff we care about */
/* Identify user */
(!empty($2)) {
user_no = $2;
user_name = substr($0, 10, 30);
}
{
/* variable mapping */
cust_no = $2;
vchr_no = $4;
inv_no = $6;
inv_no_sign = $7;
inv_desc = $9;
recv_amt = cvt_amt($11);
st = $13;
recv_date = $15;
check_no = $17;
period = $19;
batch = $21;
bank = $23;
cc = $25;
dp = $27;
acct = $29;
amt_recv = cvt_amt($31);
sign = $32;
if (sign == "-") {
amt_recv = amt_recv * -1;
}
print;
}
坦率地说,我觉得这是很干净,但我是一个( g)awk fanboi。
编辑 - 我添加了一些代码来提取用户号码和名称。用户编号是来自固定字段的字段2,但用户名必须由substr()输出,因为它与许多细节字段重叠。
您可以通过使用替换合并所有具有“下一步”动作的正则表达式:>'/ ---- | CUSTOMER TOTALS | GRAND TOTALS | PERIOD ENTERED | .../{next}' – ghostdog74 2010-04-14 03:38:28
当我运行脚本时,得到相关的产品线,但我想要做的一件事就是在所有相关产品线(1000比尔供应公司和1200票据计算机)上复制帐户#和名称。那可能发生? – 2010-04-15 09:52:29
- 1. Python的最佳报告工具
- 2. 建议使用硒webdriver的最佳报告工具
- 3. Java报告工具
- 4. php报告工具
- 5. 报告工具postresql
- 6. C中的报告工具
- 7. AppHub的报告工具
- 8. 使用PowerShell解析报告
- 9. 解析html报告文件
- 10. Boost.Spirit.Qi:如何报告解析器警告?
- 11. Ruby/Rails报告工具?
- 12. 寻求报告工具
- 13. 报告工具摇摆
- 14. Delphi的最佳报告组件?
- 15. 报告Xcode错误的最佳方法?
- 16. TDD和报告的最佳实践
- 17. 生成报告的最佳方式
- 18. 什么是报告存储的最佳解决方案?
- 19. Html Graphs的最佳工具
- 20. Ajax的最佳工具包?
- 21. 从google生成报告分析订阅源的工具
- 22. ConversionException:Jasper报告中的可解析日期
- 23. Android:最佳XML解析库?
- 24. kwargs解析最佳实践
- 25. XML解析工具
- 26. 最佳报告应用程序
- 27. 什么是最好的报告编写工具?
- 28. 解析文件的工具
- 29. Matlab中的报告工具箱
- 30. 用于开发SSRS报告的工具
您是否曾经为您的需求决定过一种解决方案? – 2014-09-22 22:59:11