FC2ブログ

サラリーマンのすらすらIT日記

IT関連を中心とした日々を綴ります。
2012/03/05

awk-連想配列は便利だ

あるアクセスログを確認することになりました。このアクセスログは1アクセスにつき1行で、行のフィールド区切り文字はタブ、行の最初のフィールドには日付が入っています。日ごとのアクセス数を知るために次のようなawkスクリプトを書きました。


BEGIN {
FS = "\t";
}
{
count[$1]++;
}
END {
for (key in count) {
print key, count[key];
}
}

簡単でした。連想配列が使えると非常に楽です。以前PHPでこういった感じの連想配列を使ったプログラムを書いたことがあり、その時も連想配列が使えるので楽だと思いました。

連想配列がない言語だとたぶん大変だと思います。例えば慣れているDelphiでやろうとすると、日付がいくつ現れるかわからないので、配列ではなくTListを使うのでしょう。TListを継承したTObjectListかな。Objectには日付の文字列とカウント数の2つの要素を持たせる。行を読むたびに同じ日付があるかどうかをチェックし、なければTObjectListの要素を1つ追加して、その日付を入れ、そのカウントを1にする。あればそのカウントをインクリメントする。こんな感じのプログラムになりそうです。上記と比べてかなり大変です。

昔の言語は連想配列がないものが多かった。なのでプログラミング能力が鍛えられたと言えば聞こえがいいですが、反面、開発効率が悪かったわけです。もう連想配列などの便利な機能がない言語には戻りたくないという気持ちです。

スポンサーサイト



コメント

コメントの投稿

  • URL
  • コメント
  • パスワード
  • 秘密
  • 管理者にだけ表示を許可する

トラックバック

トラックバックURL:http://sookibizviz.blog81.fc2.com/tb.php/1125-9af55d07

■  カレンダー

07 | 2020/08 | 09
- - - - - - 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 - - - - -

■  プロフィール

sookibizviz

Author:sookibizviz
仕事の内容やソフトの紹介を交えながら、日々の悪戦苦闘を綴っていきます。

■  最新記事

■  最新コメント

■  最新トラックバック

■  月別アーカイブ

■  カテゴリ

未分類 (64)
BizViz (24)
IT (1119)
計量 (76)
環境 (26)
数学 (181)
ニュース (46)
本 (187)
音楽 (113)
囲碁 (5)
将棋 (26)
ブログ (14)
日記 (19)

■  FC2カウンター

■  検索フォーム

■  RSSリンクの表示

■  QRコード

QRコード