0

テキストファイル 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

2 列目が価格で、3 列目が数量です。各一意の日付の合計が になるように、これを bash でループするにはどうすればよいprice * quantityですか

4

2 に答える 2

2

この awk ワンライナーを試してください:

awk -F: '{v[$NF]+=$2*$3}END{for(x in v)print x, v[x]}' file 

結果:

01APR13 6
04APR13 15
02APR13 8

ソートの編集

コメントしたように、出力を日付でソートするには 2 つの方法があります。単純な方を使用します: ^_^:

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
于 2013-04-29T11:58:41.037 に答える
0

bash の連想配列を見てください。

日付から値へのマップを作成し、行を調べて計算price*quantityし、現在マップにある値に追加するか、存在しない場合は挿入することができます。

于 2013-04-29T11:56:55.533 に答える