如何在Linux中将每天的文件分成几小时

问题描述 投票:-3回答:1

我每天大约有30000行文件。我每小时都要这个,直到一天结束,我想把它分成几个小时。例如如下:

Hours    file  
00-01     23  
01-02     230  
02-03     3453  

使用awk命令我计算一个文件,每天大约30000行。文件示例是这样的。

200 | 2003| mandi | 2017-12-27 09:20:21 | end  

每天在不同的时间内有30000行文件。这就是为什么我要分成几个小时的原因。

请帮我把它分成几小时,“for”循环或“while do”。

linux bash shell unix awk
1个回答
1
投票

仍然不确定你真正想要什么,但我认为这很接近。您的示例文件没有太大用处,因此我将其扩展如下:

200 | 2003| mandi | 2017-12-27 09:20:21 | end 
190 | 2007| mandi | 2017-12-27 10:20:21 | end 
190 | 2007| mandi | 2017-12-27 10:30:21 | end 
190 | 2007| mandi | 2017-12-27 10:31:21 | end 
190 | 2007| mandi | 2017-12-27 10:31:25 | end 
190 | 2007| mandi | 2017-12-27 23:31:25 | end 

然后,我使用GNU awk如下:

awk -F'|' '{split($4,a,/[ :]/);hour=a[3]+0; lines[hour]++}
    END{ for(h=0;h<24;h++)printf("%d-%d: %d\n",h,h+1,lines[h]) }' YourFile.csv

样本输出

0-1: 0
1-2: 0
2-3: 0
3-4: 0
4-5: 0
5-6: 0
6-7: 0
7-8: 0
8-9: 0
9-10: 1
10-11: 4
11-12: 0
12-13: 0
13-14: 0
14-15: 0
15-16: 0
16-17: 0
17-18: 0
18-19: 0
19-20: 0
20-21: 0
21-22: 0
22-23: 0
23-24: 1
© www.soinside.com 2019 - 2024. All rights reserved.