Linux,如何在表中共享相同列值的行?

时间:2015-03-04 15:07:45

标签: linux command

我有一个输入表,如:

chr21    10861860    10862010    0.004580    1235 
chr21    10896160    10896310    0.008635    928
chr21    10936080    10936230    0.004542    50 
chr21    10972180    10972330    0.008600    1235
chr21    11059120    11059270    0.008133    2002 
chr21    11101660    11101810    0.008360    468 
chr21    11181780    11181930    0.004310    928

我需要一个能够打印出该表的行的Linux命令,这些行共享最后一列中的公共元素。 在示例中,我需要使用此命令打印出来:

chr21    10861860    10862010    0.004580    1235 
chr21    10896160    10896310    0.008635    928 
chr21    10972180    10972330    0.008600    1235  
chr21    11181780    11181930    0.004310    928 

这是在最后一列中具有重复元素的行 我可以使用什么命令?

1 个答案:

答案 0 :(得分:0)

您可以先对第五列上的数据进行排序。

$ sort -n -k5,5 data-file > file1

接下来编写一个awk脚本来处理file1。如果第五个字段与上一行相同,则写入输出。

如果要保留最终输出的顺序与输入相同,请在初始输入中添加唯一键(例如行号),并根据行号对最终输出进行排序。