Linux grep从约会开始,到约会结束

Linux grep从约会开始,到约会结束,linux,grep,Linux,Grep,我想把从约会开始到约会结束的每件事都记下来。这是我当前的代码 for z in *.log; do cat /test/data/$z | grep "`date --date="yesterday" +%m\/\%d\/\%y`" > /data/demo.log; done 我的代码的问题是它不会grep新行 原始数据 > [12/28/13 17:57:15.702]: start > test_miss > [12/28/13 17:57:15

我想把从约会开始到约会结束的每件事都记下来。这是我当前的代码

for z in *.log; do cat /test/data/$z | grep "`date --date="yesterday" +%m\/\%d\/\%y`" > /data/demo.log; done
我的代码的问题是它不会grep新行

原始数据

   > [12/28/13 17:57:15.702]: start
   > test_miss
   > [12/28/13 17:57:15.702]: end 
   > [12/29/13 17:57:15.702]: new day
格雷普之后

   > [12/28/13 17:57:15.702]: start
   > [12/28/13 17:57:15.702]: end 
期望输出

   > [12/28/13 17:57:15.702]: start
   > test_miss
   > [12/28/13 17:57:15.702]: end 
从约会开始到约会结束,我怎样才能得到一切,谢谢你的帮助

 cat logfile | awk '$0 >= "xx/xx/xx 00:00" && $0 <= "yy/yy/yy 00:00"'
cat日志文件| awk'$0>=“xx/xx/xx 00:00”和&$0=“Dec 30 14:45:01”和&$0

 yest=$(date --date="yesterday" +%m\/\%d\/\%y`")
 for z in *.log; do
   awk "/$yest/{inside= !inside;print;next;} {if (inside) print;}" $z
 done

我是
内部的
作为一个布尔标志,遇到
$yest
(昨天的日期)时切换。

感谢所有的帮助和提示反正这就是我所做的

for z in *.log; 
do
yest=$(grep -n "$( date --date="yesterday" +%m\/\%d\/\%y )" /data/log/$z |cut -f1 -d: | head -n 1) ;
today=$(grep -n "$( date --date="today" +%m\/\%d\/\%y )" /data/log/$z |cut -f1 -d: | head -n 1) ;

if [[ -z "$today" ]]
then
awk "NR>="$yest"" "/data/log/$z" > /data/test/$z;

else
today=$(($today - 1)) ; 
awk "NR>="$yest"&&NR<=$today" "/data/log/$z" > /data/test/$z;
fi
done
用于*.log中的z;
做
yest=$(grep-n“$(date--date=“昨天”+%m\/\%d\/\%y)”/data/log/$z| cut-f1-d:| head-n1);
今天=$(grep-n“$(date--date=“today”+%m\/\%d\/\%y)”/data/log/$z| cut-f1-d:| head-n1);
如果[-z“$today”]]
然后
awk“NR>=“$yest”“”/data/log/$z“>/data/test/$z;
其他的
今日=$($今日-1));

awk“NR>=“$yest”&&NRUse not
grep
gawk将grep所有内容,包括今天的信息,我只想获取昨天的信息不,
gawk
has(全球)变量来处理状态。您可以使用Grep的-A n开关。它将在匹配后打印n行。@Anubhab我真正想要的是所需的输出,而不是打印行数。awk中的$0表示整个记录。不是吗?您确定这会起作用吗?除了;和
$0
应该是
$1
假设-tim之外很好Estamp位于每行的开头,这是$0@TharangaAbeyseela:否,
awk
的第一个字段是
$1
$0是整行。很抱歉我之前的评论。这是误解。我尝试了此操作,但对我无效第一个错误语法错误:意外的文件结尾我看到变量$yest丢失`”在开始时,我修复了它,然后重新运行脚本,仍然可以获得所有信息
for z in *.log; 
do
yest=$(grep -n "$( date --date="yesterday" +%m\/\%d\/\%y )" /data/log/$z |cut -f1 -d: | head -n 1) ;
today=$(grep -n "$( date --date="today" +%m\/\%d\/\%y )" /data/log/$z |cut -f1 -d: | head -n 1) ;

if [[ -z "$today" ]]
then
awk "NR>="$yest"" "/data/log/$z" > /data/test/$z;

else
today=$(($today - 1)) ; 
awk "NR>="$yest"&&NR<=$today" "/data/log/$z" > /data/test/$z;
fi
done