/var/log/messagesの行数を数える

【目的とか】
・ささっと統計を取りたい
・デフォルト環境で使えること(大事)
・/var/log/messages*で一括指定してるけど、個別に指定しても良いと思う
・ログが多い場合は重い(改善の余地あり)
【環境】
CentOS Linux release 7.3.1611 (Core)
【数える】
● /var/log/messagesから一月あたりのログの行数を数える
# cat /var/log/messages* | grep -E -o ‘^(Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec)’| uniq -c
6049 May
10625 Apr
18 May
● /var/log/messagesから一日あたりのログの行数を数える
# cat /var/log/messages* | grep -E -o ‘^(Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) ?[0-9]?[0-9]’ | uniq -c
331 May 1
74 May 2
5492 May 3
35 May 4

18 May 1
● /var/log/messagesから一時間あたりのログの行数を数える
# cat /var/log/messages* | grep -E -o ‘^(Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) ?[0-9]?[0-9] (1|2)?[0-9]’ | uniq -c
6 May 1 11
10 May 1 12
6 May 1 13
291 May 1 14
10 May 1 15

8 Apr 30 15
6 Apr 30 16
2 Apr 30 20
18 May 1 0
【実行時間】
ログをcatコマンドで増やして実行時間を測ってみた。
$ ls -lh | grep messages
-rw-rw-r– 1 arkey22 arkey22 166M 5月 5 03:57 messages
$ time cat messages | grep -E -o ‘^(Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec)’ | uniq -c > result.txt
real 0m7.337s
user 0m7.566s
sys 0m0.225s
$ time cat messages | grep -E -o ‘^(Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) ?[0-9]?[0-9]’ | uniq -c > result.txt
real 0m28.864s
user 0m29.255s
sys 0m0.286s
$ time cat messages | grep -E -o ‘^(Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) ?[0-9]?[0-9] (1|2)?[0-9]’ | uniq -c > result.txt
real 0m30.462s
user 0m30.908s
sys 0m0.308s