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 在两个时间戳之间提取日志_Unix_Awk - Fatal编程技术网

Unix 在两个时间戳之间提取日志

Unix 在两个时间戳之间提取日志,unix,awk,Unix,Awk,我正在尝试提取两个时间戳之间的所有日志。有些行可能没有时间戳,但我希望包含这些行—我希望在提取的日志中包含属于两个时间戳的每一行 日志中可能没有开始时间戳或结束时间戳,但我希望提取这两个时间戳之间的每一行 我的日志时间戳结构看起来像:[4/1/19 9:57:05:083 EDT]诸如此类 我编写的awk命令正在获取仅包含时间戳的行,并跳过中间的所有其他行 PFB我写的命令: awk -v from="11:00:38" -v to="11:50:36" '$2>=from &&a

我正在尝试提取两个时间戳之间的所有日志。有些行可能没有时间戳,但我希望包含这些行—我希望在提取的日志中包含属于两个时间戳的每一行

日志中可能没有开始时间戳或结束时间戳,但我希望提取这两个时间戳之间的每一行

我的日志时间戳结构看起来像:
[4/1/19 9:57:05:083 EDT]诸如此类

我编写的
awk
命令正在获取仅包含时间戳的行,并跳过中间的所有其他行

PFB我写的命令:

awk -v from="11:00:38" -v to="11:50:36" '$2>=from && $2<=to && $1 == "\[4/1/19"' SystemOut.log

awk-v from=“11:00:38”-v to=“11:50:36”$2>=from&$2假设
from_time_string
to_time_string
是时间戳的匹配模式,这将打印
from_time_string
to_time_string
实例之间的所有行:

awk '/from_time_string/{flag=1}/to_time_string/{flag=0;}flag' SystemOut.log

以下是如何开始-从输入数据创建字母数字可排序/可比较的时间戳:

$ awk -F'[[/: ]' '{cur = sprintf("20%02d/%02d/%02d %02d:%02d:%02d:%03d", $4,$2,$3,$5,$6,$7,$8); print cur, $0}' file
2019/04/01 09:57:05:083 [4/1/19 9:57:05:083 EDT] blah blah
现在只需将其与from和to值进行比较:

$ awk -v from='2019/04/01 09:45' -v to='2019/04/01 10:20:13' -F'[[/: ]' '
    { cur = sprintf("20%02d/%02d/%02d %02d:%02d:%02d:%03d", $4,$2,$3,$5,$6,$7,$8) }
    (cur >= from) && (cur <= to)
' file
[4/1/19 9:57:05:083 EDT] blah blah
$awk-v从2019/04/01 09:45'-v到2019/04/01 10:20:13'-F'[[/:]'
{cur=sprintf(“20%02d/%02d/%02d%02d:%02d:%03d”、$4、$2、$3、$5、$6、$7、$8)}

(cur>=from)&(cur)可能重复您如何处理夏令时(如本周末)导致的TZ变化我们的日志以UTC为单位-TZ没有变化您的问题显示了包括几行简洁、可测试的样本输入(一些在目标窗口内,一些在目标窗口外)以及我们可以帮助您的预期输出。看是否不清楚。是4月1日还是1月4日?我可以知道您的建议是:awk'/11:00:38/{flag=1}/11:50:36/{flag=0;}标记'SystemOut.log?-这不会给我任何输出如果您建议的时间字符串不在日志文件中,这将不起作用!我将需要时间范围之间的间隔,即使时间字符串在日志文件中不匹配。