プロが教えるわが家の防犯対策術!

シェル初心者です。教えてください。
ログファイルが10万行超えるものでシェルにて集計することになり、下記のような集計ができればと思っています。
商店名 商品名  価格
A商店 りんご   100
B商店  ぶどう 300
A商店  みかん 150
C商店  りんご 100
A商店  りんご 100
B商店  みかん 150
C商店  りんご 100
C商店  ぶどう 300
※各列はブランク(空白)によって区切られ、改行済みで行数は10万行以上
(1)awk '{print $1}' | uniq -d (重複した商店の抽出)
(2)awk '{print $2}' | uniq -d (重複した商品名の抽出)
(1)、(2)の抽出を満たす「価格」の合計を"集計結果”として > shukei.txt
などに出力したいと思ってます。
VBAでいれば、firlterしsumifして合計するようなイメージのものです。
ご教授お願い致します><

A 回答 (1件)

>(1)、(2)の抽出を満たす「価格」の合計を



「抽出を満たす」の論理結合が不明確ですが、
単に、データ中に実在する商店名と商品について
(商店名 + 商品)単位に価格を集計する
だけであれば

awk '{ s[$1,$2] += $3 } END { for( x in s) print x,s[x] }' |sort > shukei.txt

で可能と思います。

「A商店」の「ぶどう」は"無い"ということを出力したければ

awk '{++a[$1];++b[$2];s[$1,$2] += $3} END { for(x in a) for (y in b) print x,y,s[x,y] }' |sort > shukei.txt

とか
    • good
    • 0
この回答へのお礼

回答誠に有難うございます><
補足の構文も有難う御座います><
1点、集計の結果で”商店Aりんご200”という出力となり、区切りスペースがなくなってしまうのですが、区切りスペースをそのまま残しての集計出力できる方法は御座いますか><
実際ログでは商店A商品いずれも文字数で区切りスペースが挿入など今の自分では・・・今一度ご教授いただけると幸いです。よろしくお願いします><

お礼日時:2011/05/03 21:46

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!