我有一个如下所示的文件,我想保留第三个字段上具有最高值的第一个和第二个字段之间的组合(带箭头的那些,箭头不包括在实际文件中)。
1 1 10
1 1 12 <-
1 2 6 <-
1 3 4 <-
2 4 32
2 4 37
2 4 39
2 4 40 <-
2 45 12
2 45 15 <-
3 3 12
3 3 15
3 3 17
3 3 19 <-
3 15 4
3 15 9 <-
4 17 25
4 17 28
4 17 32
4 17 36 <-
4 18 4 <-
为了拥有和输出这样:
1 1 12
1 2 6
1 3 4
2 4 40
2 45 15
3 3 19
3 15 9
4 17 36
4 18 4
我想也许我只是玩sort
和uniq
命令,但我弄得一团糟。
有任何想法吗?
非常重要的注意事项:条目从一开始就没有整齐排序,我只使用了sort -k1,1 -k2,2 -k3,3
先谢谢你们
这有点好笑,但是:
sort -nr myfile.txt | rev | uniq -f1 | rev | sort -n
输出:
1 1 12
1 2 6
1 3 4
2 4 40
2 45 15
3 15 9
3 3 19
4 17 36
4 18 4
这个怎么运作:
uniq
需要)可能不是世界上效率最高的,但至少每一步都有道理。
sort
的两次通过应该这样做,例如在bash
shell
sort -k1,1n -k2,2n -k3,3nr -t$'\t' file | sort -k1,1n -k2,2n -t$'\t' -u -s
1 1 12
1 2 6
1 3 4
2 4 40
2 45 15
3 3 19
3 15 9
4 17 36
4 18 4