これは私のログファイル(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