syslog 処理 (続き)


> そういえば、’Jan’ と ’Feb’ だと ’Feb’ が先に来るわけですが

これは検討漏れでした。感謝です。

ということで、直してみました。
mktime() 関数か何かを使おうかと思いましたが、月単位の中身は日付でソートできるので、これで十分かと思います。
gawk の asort() コマンドはソートキーを指定できないのが最大の欠点でしょうか。
悩み始めると、結果的に自分が昔作った ktxc.awk のようにソートを実装し始めてしまうんだろうな。

#! /usr/bin/gawk -f

BEGIN {
    month["Jan"] = "01"; month["Feb"] = "02"; month["Mar"] = "03";
    month["Apr"] = "04"; month["May"] = "05"; month["Jun"] = "06";
    month["Jul"] = "07"; month["Aug"] = "08"; month["Sep"] = "09";
    month["Oct"] = "10"; month["Nov"] = "11"; month["Dec"] = "12";
}

{
    line[NR] = gensub(/\[[0-9]+\]:/, "", "1", $5) " " \
        gensub($1, month[$1], "1", $1) " " $0;
}

END {
    asort(line);
    for (i = 1; i <= NR; i++) {
        n_line = split(line[i], a_line);
        if (prev != a_line[1]) {
            print "\n[" a_line[1] "]";
        }
        prev = a_line[1];
        sub(a_line[1], "", line[i]);
        sub(" " a_line[2], "", line[i]);
        print line[i];
    }
}

お、年はないからいいよね。
rotate していても年始に困るかもしれませんが、まぁ、見る分には十分かな。