使用awk搜索某个时间帧不起作用

时间:2014-07-10 20:00:01

标签: unix awk

我需要从日志文件中提取特定时间范围的日志消息。以下不起作用。 请帮忙

hour=`date +%H`
hour=`expr $hour - 1`
echo $hour
start1=$hour":00:00"
start="$start1"
end1=$hour":59:59"
end="$end1"

awk '$0 >= $start && $0 <= $end' server.log

但是以下命令可以从命令行运行     awk&#39; $ 0&gt; =&#34; 11:00:00&#34; &安培;&安培; $ 0&lt; =&#34; 11:59:59&#34;&#39; server.log的

1 个答案:

答案 0 :(得分:2)

您正在使用awk读取错误的变量。这是一种阅读它们的方法

awk '$0 >= s && $0 <= e' s="$start" e="$end" file

你也不应该使用旧的和过时的背景,但是使用这样的括号:

hour=$(date +%H)

要删除一小时,请执行

hour=$(date +%H -d 1h)

获得分钟:

date +%H":00:00" -d 1h
11:00:00
date +%H":59:59" -d 1h
11:59:59

一气呵成:

awk '$0>=s && $0<=e' s='$(date +%H":00:00" -d 1h)' e='$(date +%H":59:59" -d 1h)' file

参考ED评论:

awk -v s='$(date +%H":00:00" -d 1h)' -v e='$(date +%H":59:59" -d 1h)' '$0>=s && $0<=e' file