在awk中查找时间戳子字符串中的差异

在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]":

每当两个连续日志之间的时间戳不同时,我尝试在/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]":"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?…中的样本行,当然还有预期的输出。您在这里发布的时间已经足够长了,现在已经知道了这一点。