我不是Linux脚本专家,我知道我可以通过一些编程实现这一点,但我只是试着通过一些命令行或简单的脚本来完成它。任何帮助将不胜感激。
我有一个csv文件,包含以下行
Date,Time,Global_active_power,Global_reactive_power,Voltage,Global_intensity,Sub_metering_1,Sub_metering_2,Sub_metering_3
16/12/2006,18:00:00,2.79,0.18,237.52,11.8,0,0,18
16/12/2006,18:01:00,2.624,0.144,238.2,11,0,0,17
16/12/2006,18:02:00,2.772,0.118,238.28,11.6,0,0,17
16/12/2006,18:03:00,3.74,0.108,236.93,16.4,0,16,18
16/12/2006,18:04:00,4.928,0.202,235.01,21,0,37,16
16/12/2006,18:05:00,6.052,0.192,232.93,26.2,0,37,17
16/12/2006,18:06:00,6.752,0.186,232.12,29,0,36,17
16/12/2006,18:07:00,6.474,0.144,231.85,27.8,0,37,16
16/12/2006,18:08:00,6.308,0.116,232.25,27,0,36,17
16/12/2006,18:09:00,4.464,0.136,234.66,19,0,37,16
16/12/2006,18:10:00,3.396,0.148,236.2,15,0,22,18
16/12/2006,18:11:00,3.09,0.152,237.07,13.8,0,12,17
16/12/2006,18:12:00,3.73,0.144,235.78,16.4,0,27,17
16/12/2006,18:13:00,2.308,0.16,237.43,9.6,0,1,17
16/12/2006,18:14:00,2.388,0.158,237.26,10,0,1,17
16/12/2006,18:15:00,4.598,0.1,234.25,21.4,0,20,17
16/12/2006,18:16:00,4.524,0.076,234.2,19.6,0,9,17
16/12/2006,18:17:00,4.202,0.082,234.31,17.8,0,1,17
16/12/2006,18:18:00,4.472,0,233.29,19.2,0,1,16
16/12/2006,18:19:00,2.852,0,235.61,12,0,1,17
16/12/2006,18:20:00,2.928,0,235.25,12.4,0,1,17
16/12/2006,18:21:00,2.94,0,236.04,12.4,0,2,17
16/12/2006,18:22:00,2.934,0,235.51,12.4,0,1,17
16/12/2006,18:23:00,2.926,0,235.68,12.4,0,1,17
16/12/2006,18:24:00,3.452,0,235.2,15.2,0,1,17
如上所示,第二个字段是一天中的时间,hh:mm:ss(最高分钟分辨率)。显然,数据记录是每分钟创建的。我想创建脚本来执行以下操作:
答案 0 :(得分:1)
awk -F: 'NR>1{print > "file" (1+$2%5)}' input
这应该做你想要的。运行后,您应该看到5个文件:file1-file5
答案 1 :(得分:0)
将awk
与多个分隔符一起使用,并为每个文件使用单独的行。
awk -F'[:,]' '$3 % 5 == 0' Input.txt > File1
awk -F'[:,]' '$3 % 5 == 1' Input.txt > File2
awk -F'[:,]' '$3 % 5 == 2' Play.input > File3
awk -F'[:,]' '$3 % 5 == 3' Play.input > File4
awk -F'[:,]' '$3 % 5 == 4' Play.input > File5