BIG EDIT
我对计算有误解,所以我需要重新做这个。
原始样本数据:
2600,AEIOU-2600,stack,01,04/28/2015,C C R,S,1.07
2600,AEIOU-2600,stack,02,04/01/2015,C C S,S,10.65
2601,"over, L.P. - 00001",stack,01,04/01/2015,C C S,s,16.43
2601,"over, L.P. - 000001",stack,02,04/01/2015,D C S,s,17.16
2602,UEIA,stack,01,04/28/2015,C C R,s,10
2602,UEIA,stack,02,04/28/2015,C C R,s,20
字段$ 1:数字
字段$ 2:名称
字段$ 3:帐户
字段$ 4:发票编号
字段$ 5:日期
字段$ 6:输入
Field $ 7:州
字段$ 8:金额
脚本:
#!/usr/local/bin/gawk -f
BEGIN {
FPAT = "\"[^\"]*\"|[^,]*"
OFS = ","
}
NR > 1 {
arr[$1 OFS $2 OFS $6]++
}
END {
for (key in arr)
print key, arr[key]
}
上面的脚本输出:
2601,"over, L.P. - 000001",D C S,1
2601,"over, L.P. - 00001",C C S,1
2602,UEIA,C C R,2
2600,AEIOU-2600,C C S,1
我需要根据字段$ 1进行分组,然后将字段$ 6分组。
脚本运行后,将生成如下所示的数据:
2600,AEIOU-2600,C C R,1,1.07
2600,AEIOU-2600,C C S,1,10.65
2601,"over, L.P. - 00001",C C S,2,33.59
2602,UEIA,C C R,2,30
我们看到2600有两种不同的类型,所以它们各自有自己的线,我们看到2601有两个C C S组合是33.59。基本上按字段$ 1分组,然后按字段$ 6分组。
那么我可以将C C R和C C A的结果乘以.02(出现次数)以及其他所有结果* .02 * .0013。
2600,AEIOU-2600,C C R,1,1.07,0.0214
2600,AEIOU-2600,C C S,1 10.65,0.0002769
2601,"over, L.P. - 00001",C C S,2,33.59,0.00087334
2602,UEIA,C C R,2,30,0.00078
字段$ 1:数字
字段$ 2:名称
字段$ 3:输入
字段$ 4:发生次数
总计$ 5
字段$ 5:calc_total
修改
#!/usr/local/bin/gawk -f
BEGIN {
FPAT = "\"[^\"]*\"|[^,]*"
OFS = ","
}
NR > 1 {
arr[$1 OFS $2 OFS $6 OFS $8]++
}
END {
for (key in arr)
print key, arr[key]
}
这种情况越来越好但现在我需要第二组并按字段$ 3分组。现在,上面的脚本分组为1美元,然后是5美元。