こんばんは。gawkとbashを用いてlogの集計を行っています。
その際にお小遣い帳のような機能を実現することがなかなか出来ずに
困っています。perlだったら、ネットでもかなり情報が豊富だし、
書籍も多いと思うけど、awkってUNIXの基本的な知識ってことでUNIX管理系の
書籍にちょこっと載ってるってケースが多いですよね。それか
ものすごく分厚い本でなかなかなじめないようなのとか。。。助けて下さい。
例えば

1/1 gohan 1000
1/1 kaimono 5000
1/1 kaimono 2000
1/2 karaoke 3500
1/2 gohan 1200
1/2 gohan 1500

といったデータがあったとして、これを

1/1 gohan 1000
1/1 kaimono 7000
1/2 karaoke 3500
1/2 gohan 2700

のように集計したいのです。月日の部分を基点にして、1/1の部分についてだけ
for(i in count)の形式を用いて集計する。その後1/2の部分について集計する。
というのをずーっと続けていくには、どのようなスクリプトを書けば
いいんですか?教えて下さい。どうかお願いします。

A 回答 (2件)

集計のやり方については No.1 の回答がズバリなので、私は、情報の紹介を。



確かに、awk は perl に比べて情報が少ないですよね。
私は、awk のマニュアルを主体に憶えました。

参考URLには、gawk のマニュアルと、awk を使った数値計算の情報を載せている
ページの awk のガイドの URL を載せておきます。

後者のページは、以下の URL からリンクが貼られています。他の人が書いた
スクリプトが、意外と良い教科書になったりします。

http://aoki2.si.gunma-u.ac.jp/Hanasi/Algo/algory …

参考URL:http://www.linux.or.jp/JM/html/GNU_gawk/man1/gaw …
    • good
    • 0

{


sum[$1,$2] += $3
}

END {
for ( item in sum ) {
split(item, t, SUBSEP );
printf("%s %s %d\n",t[1],t[2],sum[item]);
}
}

こんなのでなんとかなります。
後はパイプでソートするなり、読み込みで空白行を飛ばすなり、・・・
    • good
    • 0
この回答へのお礼

わぉ。ご回答ありがとうございます。これだけ情報を頂ければ
あとは自分で頑張ってみますね。コードもURLも参考にします。
嬉しいですぅ。

お礼日時:2001/12/27 13:08

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

このQ&Aを見た人が検索しているワード


このカテゴリの人気Q&Aランキング

おすすめ情報

カテゴリ