探索 Awk:从报表生成到调试与限制
1. 生成列报表
在小型商业应用中,我们可以使用 Awk 来生成带有美元金额的报表,这充分展现了 Awk 的数据处理和报表生成能力。
假设存在一个数据录入脚本,它有两个主要任务:一是录入客户的姓名和邮寄地址,用于后续构建邮寄列表;二是记录客户对七种商品的订单信息,包括商品编号、订购数量和单价。这些数据会分别写入不同的文件。
以下是客户订单文件中的两条示例记录:
Charlotte Webb
P.O N61331 97 Y 045 Date: 03/14/97
#1 3 7.50
#2 3 7.50
#3 1 7.50
#4 1 7.50
#7 1 7.50
Martin S. Rossi
P.O NONE Date: 03/14/97
#1 2 7.50
#2 5 6.75
每个订单可能占据多行,订单之间用空行分隔。前两行提供客户姓名、采购订单编号和订单日期,后续每行则记录商品编号、订购数量和单价。
我们可以编写一个简单的程序,将商品数量乘以单价:
awk '/^#/ {
amount = $2 * $3
printf "%s %6.2f\n", $0, amount
next
}
{ print }' $*
这个程序的主要逻辑是,