我需要一个脚本来与文件工作,并总结了从SLA探头故障总结时间。该文件我已经是以下几点:从日志文件
Jan 28 22:10:02 test-195869-st28 Jan 28 22:10:04 test-195869-st28 Jan 28 22:10:06 test-195869-st28 Jan 28 22:10:08 test-195869-st28 Jan 28 22:10:10 test-195869-st28 Jan 28 22:10:12 test-195869-st28 Jan 28 22:10:14 test-195869-st28 Jan 28 22:15:16 test-195869-st28 Jan 28 23:12:34 test-195869-st28 Jan 28 23:12:36 test-195869-st28 Jan 28 23:12:38 test-195869-st28 Jan 28 23:12:40 test-195869-st28 Jan 28 23:12:42 test-195869-st28 Jan 28 23:12:44 test-195869-st28 Jan 28 23:12:46 test-195869-st28 Jan 28 23:12:48 test-195869-st28 Jan 28 23:12:50 test-195869-st28 Jan 28 23:12:52 test-195869-st28 Jan 29 13:12:18 test-195869-st28 Jan 29 13:12:20 test-195869-st28 Jan 29 13:12:22 test-195869-st28 Jan 29 13:12:24 test-195869-st28 Jan 29 13:12:26 test-195869-st28 Jan 29 13:12:28 test-195869-st28 Jan 29 13:12:30 test-195869-st28 Jan 29 13:12:32 test-195869-st28 Jan 29 13:12:34 test-195869-st28 Jan 29 13:12:36 test-195869-st28
所需的输出是继
Jan 28 22:10:02 test-195869-st28
...
Jan 28 22:10:14 test-195869-st28
Jan 28 22:15:16 test-195869-st28
Jan 28 23:12:34 test-195869-st28
...
Jan 29 13:12:36 test-195869-st28
所有中断值得总结(一切掉落在单30秒间隔为单停运)。但是,有单一的第二次中断应作为单个条目保留在日志中。
直到现在我试图做的是使用awk阅读从文件:
awk 'BEGIN{prevDt=0;}
{
getDate="date -d \""$1" "$2" "$3"\" \"+%s\""
print "Get date:" (getDate);
while ((getDate | getline date) > 0) {
Diff=date-prevDt
prevDt=date;
print "Difference: "Diff" "$1" "$2" "$3" "$12;
}
close(getDate);
} END { print $date }'
我当时就想,用于以后的比较这种差别。
谢谢
在最小编辑你的问题来格式化使用'{}'编辑按钮,您的样品的输入和输出,并提供到目前为止你已经尝试了什么。摆脱所有'...'和其他任何可能导致您的示例输入/输出无法测试的内容。 –
所以你需要在输出中包含'...'的行,对吧?你有没有或可以获得GNU awk?为什么'Jan 28 23:12:34 test-195869-st28 ... Jan 29 13:12:36 test-195869-st28'在输出中分组,好像它们是30秒范围一样?如果输入具有重叠的时间戳,那么输出是什么'10:20:00 ... 10:20:20 ... 10:20:40'? –