2つの日付間のデータを取得するためにsedコマンドを使用しています。日付パターンを一致させるために正規表現を使用しています。
私が使用するサンプルデータは次のとおりです。
192.168.0.123 - - [25/Nov/2018:13:25:09 +0530] "Data 4"
192.168.0.123 - - [26/Nov/2018:13:25:09 +0530] "Data 4"
192.168.0.123 - - [26/Nov/2018:13:25:11 +0530] "Data 5"
192.168.0.123 - - [27/Nov/2018:13:25:11 +0530] "Data 5"
192.168.0.123 - - [27/Nov/2018:13:25:53 +0530] "Data 6"
192.168.0.123 - - [28/Nov/2018:13:25:09 +0530] "Data 4"
192.168.0.123 - - [28/Nov/2018:13:25:11 +0530] "Data 5"
192.168.0.123 - - [28/Nov/2018:13:25:53 +0530] "Data 6"
192.168.0.123 - - [30/Nov/2018:13:25:53 +0530] "Data 6"
192.168.0.123 - - [01/Dec/2018:13:25:09 +0530] "Data 4"
192.168.0.123 - - [01/Dec/2018:13:25:09 +0530] "Data 4"
2つの問題に直面しています。
最後の日付が最初に発生する前にのみ出力を提供します。つまり、使用されるコマンドが次のような場合です。
$ sed -n '/26/Nov/2018/,/28/Nov/2018/p' ファイル。ログ
それから私が得た結果は次のようになります。
192.168.0.123 - - [25/Nov/2018:13:25:09 +0530] "Data 4"
192.168.0.123 - - [26/Nov/2018:13:25:09 +0530] "Data 4"
192.168.0.123 - - [26/Nov/2018:13:25:11 +0530] "Data 5"
192.168.0.123 - - [27/Nov/2018:13:25:11 +0530] "Data 5"
192.168.0.123 - - [27/Nov/2018:13:25:53 +0530] "Data 6"
192.168.0.123 - - [28/Nov/2018:13:25:09 +0530] "Data 4"
しかし、私は期待しています。
192.168.0.123 - - [25/Nov/2018:13:25:09 +0530] "Data 4"
192.168.0.123 - - [26/Nov/2018:13:25:09 +0530] "Data 4"
192.168.0.123 - - [26/Nov/2018:13:25:11 +0530] "Data 5"
192.168.0.123 - - [27/Nov/2018:13:25:11 +0530] "Data 5"
192.168.0.123 - - [27/Nov/2018:13:25:53 +0530] "Data 6"
192.168.0.123 - - [28/Nov/2018:13:25:09 +0530] "Data 4"
192.168.0.123 - - [28/Nov/2018:13:25:11 +0530] "Data 5"
192.168.0.123 - - [28/Nov/2018:13:25:53 +0530] "Data 6"
ログに存在しない日付を入力した場合。すべてのデータをファイルの最後までインポートしますが、データが存在する最後の位置までインポートしたいと思います。つまり、コマンドが次のような場合です。
$ sed -n '/26/Nov/2018/,/29/Nov/2018/p' ファイル。ログ
その後、出力は次のようになります。
192.168.0.123 - - [25/Nov/2018:13:25:09 +0530] "Data 4"
192.168.0.123 - - [26/Nov/2018:13:25:09 +0530] "Data 4"
192.168.0.123 - - [26/Nov/2018:13:25:11 +0530] "Data 5"
192.168.0.123 - - [27/Nov/2018:13:25:11 +0530] "Data 5"
192.168.0.123 - - [27/Nov/2018:13:25:53 +0530] "Data 6"
192.168.0.123 - - [28/Nov/2018:13:25:09 +0530] "Data 4"
192.168.0.123 - - [28/Nov/2018:13:25:11 +0530] "Data 5"
192.168.0.123 - - [28/Nov/2018:13:25:53 +0530] "Data 6"
192.168.0.123 - - [30/Nov/2018:13:25:53 +0530] "Data 6"
192.168.0.123 - - [01/Dec/2018:13:25:09 +0530] "Data 4"
192.168.0.123 - - [01/Dec/2018:13:25:09 +0530] "Data 4"
私はそれが次のようになると予想しましたが、
192.168.0.123 - - [25/Nov/2018:13:25:09 +0530] "Data 4"
192.168.0.123 - - [26/Nov/2018:13:25:09 +0530] "Data 4"
192.168.0.123 - - [26/Nov/2018:13:25:11 +0530] "Data 5"
192.168.0.123 - - [27/Nov/2018:13:25:11 +0530] "Data 5"
192.168.0.123 - - [27/Nov/2018:13:25:53 +0530] "Data 6"
192.168.0.123 - - [28/Nov/2018:13:25:09 +0530] "Data 4"
192.168.0.123 - - [28/Nov/2018:13:25:11 +0530] "Data 5"
192.168.0.123 - - [28/Nov/2018:13:25:53 +0530] "Data 6"
答え1
私は使用することを好む日付 grep日付に基づいてログを解析します。
[root@server22 ~]# cat file.log
192.168.0.123 - - [25/Nov/2018:13:25:09 +0530] "Data 4"
192.168.0.123 - - [26/Nov/2018:13:25:09 +0530] "Data 4"
192.168.0.123 - - [26/Nov/2018:13:25:11 +0530] "Data 5"
192.168.0.123 - - [27/Nov/2018:13:25:11 +0530] "Data 5"
192.168.0.123 - - [27/Nov/2018:13:25:53 +0530] "Data 6"
192.168.0.123 - - [28/Nov/2018:13:25:09 +0530] "Data 4"
192.168.0.123 - - [28/Nov/2018:13:25:11 +0530] "Data 5"
192.168.0.123 - - [28/Nov/2018:13:25:53 +0530] "Data 6"
192.168.0.123 - - [30/Nov/2018:13:25:53 +0530] "Data 6"
192.168.0.123 - - [01/Dec/2018:13:25:09 +0530] "Data 4"
192.168.0.123 - - [01/Dec/2018:13:25:09 +0530] "Data 4"
11月26日から11月29日の間のログを解析します。
[root@server22 ~]# dategrep --start 26/Nov/2018:00:00:00 --end 29/Nov/2018:00:00:00 file.log --format "%d/%b/%Y:%H:%M:%S"
192.168.0.123 - - [26/Nov/2018:13:25:09 +0530] "Data 4"
192.168.0.123 - - [26/Nov/2018:13:25:11 +0530] "Data 5"
192.168.0.123 - - [27/Nov/2018:13:25:11 +0530] "Data 5"
192.168.0.123 - - [27/Nov/2018:13:25:53 +0530] "Data 6"
192.168.0.123 - - [28/Nov/2018:13:25:09 +0530] "Data 4"
192.168.0.123 - - [28/Nov/2018:13:25:11 +0530] "Data 5"
192.168.0.123 - - [28/Nov/2018:13:25:53 +0530] "Data 6"