日付や時刻、タイムスタンプでファイルをgrep(範囲指定可)する『dategrep』コマンド
Pocket

ログなどで日付や時刻、その範囲を抽出する際だとgrepやawkなどを使って頑張ることが多いのだが、なんか他いいコマンドないかなと調べていたところ、Perlで記述された『dategrep』というコマンドがあるようだ。名前そのままに、日付でファイルやログをgrepできるツールのようだ。

以下のようにコマンドを実行してインストールする。
(cpanからもインストールできるが、うまく動作しなかった)

git clone https://github.com/mdom/dategrep
cd dategrep/
sudo sh -c 'perl Makefile.PL && make && make install'
sudo cpan Moo.pm Date::Manip::Delta Config::Tiny
Sponsored Links

インストールできたら、実際にログを抽出してみよう。
以下のようにコマンドを実行することで、指定した範囲の時刻を抽出可能なようだ。

dategrep --format "%b %d %H:%M:%S" --start "23:00" --end "23:10" /var/log/messages
[root@BS-PUB-CENT7-02 ~]# dategrep --format "%b %d %H:%M:%S" --start "23:00" --end "23:10" /var/log/messages
Jan 30 23:01:01 BS-PUB-CENT7-02 systemd: Started Session 2 of user root.
Jan 30 23:01:01 BS-PUB-CENT7-02 systemd: Starting Session 2 of user root.
Jan 30 23:08:23 BS-PUB-CENT7-02 systemd: Starting Cleanup of Temporary Directories...
Jan 30 23:08:23 BS-PUB-CENT7-02 systemd: Started Cleanup of Temporary Directories.

 

確かに、対象の時間帯のみを抽出することができた。
その他の実行例についてはこちらを参照するといいだろう。

テストでログの順番をバラバラにしてみたところ、一部行は抽出されなかったのでawkやsedによる処理と同様に指定された範囲を抽出しているようだ。
awkやsedに慣れてるようならばそちらを使ったほうがいいだろう。

日付のフォーマットを指定できるのは結構いいと思うので、CUIが不慣れな人はこれを使うのも有りかも。

 

Pocket

Written by blacknon

インフラ系のSE。一時期はプログラマ。 仮想化とオープンソースに興味あり。一日中寝てたい今日このごろ。 スペインとかで働きたいなぁ…(シエスタがあるので)

Leave a Comment

メールアドレスが公開されることはありません。

*