在awk中查找时间戳子字符串中的差异
每当两个连续日志之间的时间戳不同时,我尝试在/var/log/messages输出中附加一些文本,例如: 上一日志:00:01:59和当前日志00:02:00在awk中查找时间戳子字符串中的差异,awk,Awk,每当两个连续日志之间的时间戳不同时,我尝试在/var/log/messages输出中附加一些文本,例如: 上一日志:00:01:59和当前日志00:02:00 或 上一日志:00:01:49和当前日志00:01:50 如果在连续日志中时间戳的子字符串不同,请将一些消息附加到$0 您可以运行下面的命令,它工作1分钟,需要10秒 tail -f /var/log/messages |awk '{split($3,a,":");split($3,b,"");new_time=a[1]":"a[2]":
或
上一日志:00:01:49和当前日志00:01:50 如果在连续日志中时间戳的子字符串不同,请将一些消息附加到
$0
您可以运行下面的命令,它工作1分钟,需要10秒
tail -f /var/log/messages |awk '{split($3,a,":");split($3,b,"");new_time=a[1]":"a[2]":"b[1]; if(prev_time==new_time) print $0; else print "10 Second group is over, starting new: "$0" "prev_time " "new_time } {split($3,a,":");split($3,b,"");prev_time=a[1]":"a[2]":"b[1]}'
所需的结果是修改上述命令,以在10秒的日志间隔内打印相同的消息,目前的打印间隔为1分钟。我已经使用split()捕获了“HH:MM:S
”而不是“HH:MM:SS
”,因此每当私密的“HH:MM:S
”和当前的“HH:MM:S
”不同时,打印消息“10秒组结束,开始新的:$0
”。不确定这里有什么错误。
简而言之,当前它在一分钟变化时工作,当秒从39秒变为40秒或从09秒变为10秒时需要它。而不是从11秒变为12秒。HH:MM:SS,需要更改粗体标记的S
采样线:
Jan 23 15:09:54 foo bar
Jan 23 15:10:04 bla bla
这是总体思路:
$ for((i=35;i<45;i++)); do echo Jan 23 00:01:$i; done |
awk '{split($3,a,":"); print $0, (p!=(c=int(a[3]/10))?"<<<":""); p=c}'
Jan 23 00:01:35 <<<
Jan 23 00:01:36
Jan 23 00:01:37
Jan 23 00:01:38
Jan 23 00:01:39
Jan 23 00:01:40 <<<
Jan 23 00:01:41
Jan 23 00:01:42
Jan 23 00:01:43
Jan 23 00:01:44
$for((i=35;我可以粘贴/var/log/messages?…中的样本行,当然还有预期的输出。您在这里发布的时间已经足够长了,现在已经知道了这一点。