总计基于另一列
问题描述:
列说我有一个文本文件items.txt总计基于另一列
Another Purple Item:1:3:01APR13
Another Green Item:1:8:02APR13
Another Yellow Item:1:3:01APR13
Another Orange Item:5:3:04APR13
当第二列是价格,第三是数量。我怎么能在bash中循环这个每个独特的日期总共有price * quantity
?
答
试试这个AWK一行代码:
awk -F: '{v[$NF]+=$2*$3}END{for(x in v)print x, v[x]}' file
结果:
01APR13 6
04APR13 15
02APR13 8
编辑排序
为我评论,还有按日期对输出进行排序两种方法,我只是采取更简单的一个:^ _ ^:
kent$ awk -F: '{ v[$NF]+=$2*$3}END{for(x in v){"date -d\""x"\" +%F"|getline d;print d,x,v[x]}}' file|sort|awk '$0=$2" "$3'
01APR13 6
02APR13 8
04APR13 15
尽我所能,我试图在shell中做到这一点。 – Shannon 2013-04-29 11:57:19
只是好奇,但为什么? – troelskn 2013-04-29 11:58:34
@troelskn,bash也是一种脚本语言。 – Shahbaz 2013-04-29 12:03:19