Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/unix/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Unix 使用awk搜索特定时间段不起作用_Unix_Awk - Fatal编程技术网

Unix 使用awk搜索特定时间段不起作用

Unix 使用awk搜索特定时间段不起作用,unix,awk,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 hour=`date+%H` hour=`expr$hour-1` 回声

我需要从日志文件中提取特定时间段的日志消息。下面的方法不起作用。 请帮忙

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
hour=`date+%H`
hour=`expr$hour-1`
回声$hour
start1=$hour“:00:00”
start=“$start1”
end1=$hour“:59:59”
end=“$end1”

awk'$0>=$start&&$0=“11:00:00”&&&$0您使用
awk
读取变量时出错。这里有一种阅读它们的方法

awk '$0 >= s && $0 <= e' s="$start" e="$end" file
要删除一个小时,请执行以下操作:

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

awk'$0>=s&&$0=s&&$0是否存在某种编程语言,在程序结束时初始化变量是执行操作的自然方式?我最近在awk中看到一些人这样做,我只是想弄清楚这个想法是从哪里来的,最好在程序文本之后而不是之前初始化变量。在awk中,这两种方法甚至是不等价的,因为在脚本开始后初始化的变量将在开始时未初始化,所以它不仅难以读取,而且引入了不明显的复杂性和潜在的错误。为什么人们不应该使用反勾号,除了看起来模棱两可之外,还有什么实际的缺点吗?@Jidder搜索一下,或者读这样的帖子:但总的来说,嵌套更容易阅读,效果更好。
awk '$0>=s && $0<=e' s='$(date +%H":00:00" -d 1h)' e='$(date +%H":59:59" -d 1h)' file
awk -v s='$(date +%H":00:00" -d 1h)' -v e='$(date +%H":59:59" -d 1h)' '$0>=s && $0<=e' file