我有一个包含可变行数的文件,如:
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 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
对于每个cn,我只会有每小时的第一行(在本例中,只有
)cn015 00:00:02 0 0.00 99.00 cn015 00:00:02 1 0.00 99.00<00>对于cn015 00:00)
我更喜欢使用awk
的答案,但可以接受sed
或sort
。
答案 0 :(得分:1)
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
为每个给定小时打印唯一第一个和第三个字段的行。这是我对这个问题的理解。