【问题标题】:How can I sort, find duplicates in one column and delete them together with their match in another column?如何排序,在一列中查找重复项并将它们与另一列中的匹配项一起删除?
【发布时间】:2016-04-18 23:19:51
【问题描述】:

我有一个包含这些信息的非常大的文件

7-92383888 rs10
7-6013153 rs10000
12-126890980 rs1000000
4-57561647 rs10000003
4-85161558 rs10000005 
4-172776204 rs10000008
4-71048953 rs10000009 
2-50711642 rs1000001

第一列是染色体编号和碱基对位置,第二列是可以在该特定区域找到的 SNP。在第一列中有一些重复项,但在第二列中没有。如何对第 1 列进行排序,查找重复项,然后删除整行?因此,删除第 1 列的重复项,同时删除第 2 列中的匹配值。另外,在排序时,我不希望第 1 列和第 2 列之间的匹配发生变化。

我阅读了以前的帖子,我知道我必须使用 sort 和 uniq 命令,但我不知道如何。

谢谢。

【问题讨论】:

    标签: unix


    【解决方案1】:

    sort 有 `-u' 标志。

    sort -uk 1
    

    这是一个例子:

    $ echo -e 'b 1\na 2\nb 1\na 2' | sort -uk 1
    a 2
    b 1
    

    【讨论】:

    • 谢谢!此命令是否还包括删除选项?我应该在哪里写文件名?
    • -u 代表“唯一”,即每个排序键(此处为第 1 列值)在输出中最多出现一次。文件的名称可以放在任何地方,比如说,在选项之后。如果要将结果写入另一个文件,请重定向输出。因此,要对input.txt 的内容进行排序并将结果写入output.txt,请运行sort -uk 1 input.txt >output.txt
    猜你喜欢
    • 2013-08-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-12-01
    • 2012-04-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多