我有一个巨大的日志文件,包含每分钟变化的时间戳,格式如下:
2017-06-16 00:00:22 - Meter_1_L12_15_3_0 state updated to 124.035
2017-06-16 00:01:54 - Meter_1_L12_15_3_0 state updated to 124.041
2017-06-16 00:02:22 - Meter_1_L12_15_3_0 state updated to 124.047
2017-06-16 00:04:09 - Meter_1_L12_15_3_0 state updated to 124.053
我想在一小时后通过shell脚本的帮助提取日志数据,格式如下:
2017-06-16 00:00:22 - Meter_1_L12_15_3_0 state updated to 124.035
2017-06-16 00:59:51 - Meter_1_L12_15_3_0 state updated to 124.391
2017-06-16 01:00:22 - Meter_1_L12_15_3_0 state updated to 124.396
2017-06-16 01:58:22 - Meter_1_L12_15_3_0 state updated to 124.718
请帮我完成这项任务。谢谢
编辑:
Reevanshi评论了以下解释:
我想提取每个小时的每个第一个和最后一个条目,就像任何一个小时,例如2:00 am到3:00 am,它们之间有100个条目,那么我只想在时间戳之间有第一个和最后一个条目。
最佳答案
您的输入和输出数据并不相互对应,但基本上,我认为您希望在小时变化时输出上一行和当前行。
因此,如果我将输入字段分隔符设置为“space”或冒号,那么我可以在字段2($2
)中选择小时,这样:
awk -F'[ :]' '{if($2!=hr){hr=$2;print prev;print}} {prev=$0}' YourLogFile
关于linux - 在Shell脚本编写一小时后才提取数据,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/44623844/