Tente isto:
awk -v start="01:07:08" -v end="01:07:11" '$3 >= start { keep=1 } $3 > end { exit } keep { print }' Test.log
Este é o meu LogFile (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
Eu quero imprimir os dados entre o Starttime e o Endtime especificados.
Eu inseri o código em um arquivo Sample.sh, que é,
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;
}
}
No GitBash eu usei o seguinte,
$ awk -v start=01:07:08 -v stop=01:07:14 -f Sample.sh Test.log
Para o qual ele deve exibir o seguinte,
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.
E também se minha entrada for
$ awk -v start=01:07:08 -v stop=01:07:11 -f Sample.sh Test.log
Então minha saída deve ser
May 10 01:07:09 F
May 10 01:07:11 G
May 10 01:07:11 H
Mas não estou obtendo a saída desejada. Como posso melhorar este código?
Tente isto:
awk -v start="01:07:08" -v end="01:07:11" '$3 >= start { keep=1 } $3 > end { exit } keep { print }' Test.log