指定された開始時間と終了時間の間にログファイルからデータを取得する方法は?

指定された開始時間と終了時間の間にログファイルからデータを取得する方法は?

これは私のログファイル(Test.Log)です。

May 10 01:06:05 A
May 10 01:06:06 B
May 10 01:06:07 C
May 10 01:07:01 D
May 10 01:07:02 E
May 10 01:07:09 F
May 10 01:07:11 G
May 10 01:07:11 H
May 10 01:07:12 I
May 10 01:07:13 J
May 10 01:07:15 k

指定した開始時刻から終了時刻までのデータを印刷したい。

Sample.shファイルにコードを入力しました。

BEGIN { StartFound = 0;StartNotFound = 0; EndFound=0; EndNotFound=0; }
{
if($0 ~ Start)
{
     StartFound = 1;
     StartNotFound = 0; 
     EndNotFound=0;
     EndFound=0;
}
else   
{
    StartNotFound = 1;
    StartFound = 0;
    EndNotFound=0;
    EndFound=0;
}

if($0 ~ End)
{
    EndFound=1;
    StartNotFound = 0; 
    StartFound = 0;
    EndNotFound=0;

}
else
{
    StartFound = 0;
    StartNotFound = 0;
    EndNotFound = 1;
    EndFound=0;
 }

if(StartFound)
{
   ANS = (Start <= $3 && $3 <= End);          
   print ANS;
}
if(StartNotFound)
{      
   ANS = (Start < $3 && $3 <= End);          
   print ANS; 
}
if(EndNotFound)
{
     ANS = (Start <= $3 && $3 < End)
     print ANS;   
}
if(EndFound)
{
   ANS = (Start <= $3 && $3 <= End);          
   print ANS;
}
}

GitBashでは以下を使用しました。

$ awk -v start=01:07:08 -v stop=01:07:14 -f Sample.sh Test.log

以下が表示されます。

    May 10 01:07:09 F
    May 10 01:07:11 G
    May 10 01:07:11 H
    May 10 01:07:12 I
    May 10 01:07:13 J.

そして私の入力

 $ awk -v start=01:07:08 -v stop=01:07:11 -f Sample.sh Test.log

それから私の結果は次のようになります。

May 10 01:07:09 F
May 10 01:07:11 G
May 10 01:07:11 H

しかし、望む結果は出ません。このコードをどのように改善できますか?

ベストアンサー1

この試み:

awk -v start="01:07:08" -v end="01:07:11" '$3 >= start { keep=1 } $3 > end { exit } keep { print }' Test.log

おすすめ記事