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

在Linux中如何将每天的文件分为小时,linux,bash,shell,unix,awk,Linux,Bash,Shell,Unix,Awk,我每天要处理大约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行是在不同的小时内完成的。这就是为什么我想将其分为小时的原因 请帮我用“f

我每天要处理大约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”将其分为几个小时。

仍然不确定您真正想要的是什么,但我认为这很接近。您的示例文件用处不大,因此我对其进行了如下扩展:

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 
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
然后,我使用
GNU awk
如下:

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 
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

请添加输入文件内容的示例,您使用的命令,您得到的输出,您想要的。这是我的脚本,但这只需要每天而不是每小时。cat file201712127 | grep-i name | wc-l请不要将代码或数据放在注释中-很难阅读。相反,请单击原始问题下的
编辑
,并确保其中的所有内容都是独立的和最新的。谢谢。所以所有带有时间
09:xx
的行都应该在一个名为
09.csv
的文件中结束?不。在文本文件中,我只需要一个计算文件在这一小时内如何生成的文件,如上面的格式。您好,但我的文件不是csv格式。是一个完全像这样的终端文件。我不明白-没有“终端文件”这样的东西。如果要将其视为文本文件,只需将扩展名更改为
txt
。如果要用逗号分隔字段,请将脚本中的冒号更改为逗号。如果您还需要其他内容,请在原始问题下输入
编辑
,并更改您的问题,使其正确显示您的输入数据和输出数据。