频道栏目
首页 > 资讯 > 浏览器 > 正文

awk应用-支票簿的结算

15-06-18        来源:[db:作者]  
收藏   我要投稿

这是一个简单的应用,用于处理支票登记条目。虽然不一定是最简单的结算支票簿的方法,但使用awk来完成某事的速度会快得令人惊奇。假设已经输入了一个如下的文件:

$ cat checkbook.test
1000
125 Market -125.45
126 Hardware Store -34.95
127 Video Store -7.45
128 Book Store -14.32
129 Gasoline -16.10

在第一行列出了初始的余额。其他的每一行提供了单个支票的信息:支票号,使用支票的场所和支票金额。这3个字段由制表符分隔,账户的数据用负数表示。于是,存款就可以用证书表示。

这个脚本的核心任务是必须得到初始的余额,并从余额中减去每个支票的全额。我们可以为每个支票提供详细的行来与支票登记内容比较。最后打印出最终的余额。代码如下:

$ cat checkbook.awk
# checkbook.awk
BEGIN { FS = "\t" }
#1 期望第一条记录为初始余额。
NR == 1 {print "Beginning Balance: \t" $1
balance = $1
next #取得下一条记录并结束
}
#2 应用与每个支票记录,将余额与数量相加。
{ print $1 , $2, $3
print balance += $3 #支票数额有负数
}

运行这段程序得到的结果如下:

$ awk -f checkbook.awk checkbook.test
Beginning Balance: 1000
125 Market -125.45
874.55
126 Hardware Store -34.95
839.6
127 Video Store -7.45
832.15
128 Book Store -14.32
817.83
129 Gasoline -16.10
801.73

这个报告很难阅读,但我们可以使用printf 语句来格式化报告的格式。最重要的是该脚本执行了我们所期望做的事情。注意,在awk中编写这样的脚本仅需要几分钟。如果用类似于C的语言来编写这样的程序将需要更长时间,其中一个原因是,你必须写更多行的代码,而且可能需要进行更低层次的编程。可以用许多精心的设计未改善这个程序,而且精炼一个程序将需要更多的时间。而使用awk可以很容易地将基本功能独立出来并加以实现。

相关TAG标签
上一篇:2014年数据泄漏调查报告解析
下一篇:UseLOBStorage
相关文章
图文推荐

关于我们 | 联系我们 | 广告服务 | 投资合作 | 版权申明 | 在线帮助 | 网站地图 | 作品发布 | Vip技术培训 | 举报中心

版权所有: 红黑联盟--致力于做实用的IT技术学习网站