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 していても年始に困るかもしれませんが、まぁ、見る分には十分かな。