Sorting linux-awk或sed或sort-filter文本文件根据规则消除某些重复行
我有一个包含可变行数的文件,如: cn015 00:00:02 0 0.00 99.00 cn015 00:00:02 1 0.00 99.00 cn015 01:00:01 0 0.00 99.00 cn015 01:00:01 1 0.00 99.00 cn015 01:00:02 0 0.00 99.00 cn015 01:00:02 1 0.00 99.00 cn015 02:00:01 0 0.00 99.00 cn015 02:00:01 1 0.00 99.00 cn017 11:00:01 0 24.41 74.59 cn017 11:00:01 1 24.90 74.10 cn017 11:00:02 0 95.96 3.04 cn017 11:00:02 1 96.04 2.96 cn017 12:00:01 0 30.34 68.66 cn017 12:00:01 1 31.24 67.76 cn017 12:00:02 0 0.00 99.00 cn017 12:00:02 1 0.00 99.00 cn015 00:00:02 0.00 99.00 cn015 00:00:02 1 0.00 99.00 cn015 01:00:01 0.00 99.00 cn015 01:00:01 1 0.00 99.00 cn015 01:00:02 0.00 99.00 cn015 01:00:02 1 0.00 99.00 cn015 02:00:01 0.00 99.00 cn015 02:00:01 1 0.00 99.00 cn017 11:00:01 0 24.41 74.59 cn017 11:00:01 1 24.90 74.10 cn017 11:00:02 0 95.96 3.04 cn017 11:00:02 1 96.04 2.96 cn017 12:00:01 0 30.34 68.66 cn017 12:00:01 1 31.24 67.76 cn017 12:00:02 0.00 99.00 cn017 12:00:02 1 0.00 99.00Sorting linux-awk或sed或sort-filter文本文件根据规则消除某些重复行,sorting,awk,sed,Sorting,Awk,Sed,我有一个包含可变行数的文件,如: cn015 00:00:02 0 0.00 99.00 cn015 00:00:02 1 0.00 99.00 cn015 01:00:01 0 0.00 99.00 cn015 01:00:01 1 0.00 99.00 cn015 01:00:02 0 0.00 99.00 cn015 01:00:02 1 0.00 99.00 cn015 02:00:01 0 0.00
- 第一列是文本
- 第二列是时间字段
- 第三个是数字
我更喜欢使用
awk
来回答问题,但是sed
或sort
是可以接受的。awk
救命
$ awk '{split($2,t,":")} !a[$1,t[1],$3]++' file
cn015 00:00:02 0 0.00 99.00
cn015 00:00:02 1 0.00 99.00
cn015 01:00:01 0 0.00 99.00
cn015 01:00:01 1 0.00 99.00
cn015 02:00:01 0 0.00 99.00
cn015 02:00:01 1 0.00 99.00
cn017 11:00:01 0 24.41 74.59
cn017 11:00:01 1 24.90 74.10
cn017 12:00:01 0 30.34 68.66
cn017 12:00:01 1 31.24 67.76
为每个给定小时的唯一第一个和第三个字段打印行。这是我对问题的理解。A.鉴于您的样本要求输出低于该值,我不清楚您所说的“每小时仅第一行”是什么意思。B.使用突出显示文本编辑框左上角的
{}
工具,使代码/数据/错误信息保持正确格式。你忘了发代码了。StackOverflow是关于帮助人们修复代码的。这不是免费的编码服务。有代码总比没有代码好。祝你好运。输入行有排序吗?第一场?按第一和第二字段?按前三个字段?所有行都按第一、第二和第三列排序,如示例。shellter:我没有代码可共享,因为没有。我想使用一个简单的脚本来过滤输出。我可以使用一些循环来消除这些行,但是速度很慢而且没有优化,因为文本文件包含200.000行。