sedで使用されている正規表現は、間隔の間に望ましい結果を提供しません。

sedで使用されている正規表現は、間隔の間に望ましい結果を提供しません。

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つの問題に直面しています。

  1. 最後の日付が最初に発生する前にのみ出力を提供します。つまり、使用されるコマンドが次のような場合です。

    $ 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"
  1. ログに存在しない日付を入力した場合。すべてのデータをファイルの最後までインポートしますが、データが存在する最後の位置までインポートしたいと思います。つまり、コマンドが次のような場合です。

    $ 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"

おすすめ記事