通用线程:Awk 实例(11)


balance,第 4 部分
END { bal=0 bal2=0 for (x in globcat) { bal=bal balance[0,x] bal2=bal2 balance2[0,x] } printf("Your available funds: .2fn", bal) printf("Your account balance: .2fn", bal2) }
这个报表将打印出汇总,如下所示:
Your available funds:1174.22Your account balance:2399.33
在 END 块中,我们使用 "for (x in globcat)" 结构来迭代每一个分类帐,根据记录在案的交易结算主要余额 。实际上,我们结算两个余额,一个是可用资金,另一个是帐户余额 。要执行程序并处理您在文件 "mycheckbook.txt" 中输入的财务数据,将以上所有代码放入文本文件 "balance",执行 "chmodx balance",然后输入 "./balance mycheckbook.txt" 。然后 balance 脚本将合计所有交易,打印出两行余额汇总 。
升级
我使用这个程序的更高级版本来管理我的个人和企业财务 。我的版本(由于篇幅限制不能在此涵盖)会打印出收入和费用的月度明细分类帐,包括年度总合、净收入和其它许多内容 。它甚至以 HTML 格式输出数据,因此我可以在 Web 浏览器中查看它 。:) 如果您认为这个程序有用,我建议您将这些特性添加到这个脚本中 。不必将它配置成要 记录任何附加信息;所需的全部信息已经在 balance 和 balance2 里面了 。只要升级 END 块就万事具备了!
我希望您喜欢本系列 。有关 awk 的详细信息,请参考以下列出的参考资料 。参考资料
·如果想看好的老式书籍,O"Reilly 的 sed & awk, 2ndEdition 是极佳选择 。
·请参考 comp.lang.awkFAQ 。它还包含许多附加 awk 链接 。
·Patrick Hartigan 的 awk tutorial 还包括了实用的 awk 脚本 。
·Thompson"s TAWKCompiler 将 awk 脚本编译成快速二进制可执行文件 。可用版本有 Windows 版、OS/2 版、Dos 版和 UNIX 版 。
·The GNUAwk User"s Guide 可用于在线参考 。
关于作者
Daniel Robbins 居住在新墨西哥州的 Albuquerque 。他是 Gentoo Technologies, Inc. 的总裁兼 CEO,Gentoo Linux(用于 PC 的高级 Linux)和 Portage 系统(Linux 的下一代移植系统)的创始人 。他还是 Macmillan 书籍 Caldera OpenLinux Unleashed、SuSE Linux Unleashed 和 Samba Unleashed 的合作者 。Daniel 自二年级起就与计算机结下不解之缘,那时他首先接触的是 Logo 程序语言,并沉溺于 Pac-Man 游戏中 。这也许就是他至今仍担任 SONY Electronic Publishing/Psygnosis 的首席图形设计师的原因所在 。Daniel 喜欢与妻子 Mary 和新出生的女儿 Hadassah 一起共度时光 。可通过 drobbins@gentoo.org 与 Daniel 联系

推荐阅读