【问题标题】:How to remove duplicates based on the last few characters in a particular column?如何根据特定列中的最后几个字符删除重复项?
【发布时间】:2015-10-20 06:00:14
【问题描述】:

我有一个包含多列的文件,但我只想删除第一列中最后 8 个字符的重复项。下面有一个例子:

 AJCBK:1:1106:16747:8632_1:N:0:AGCTTCAGTTGTGTGG +   Gene    0   Sequence    Score   0
 AJCBK:1:1109:14645:19987_1:N:0:AGCTTCAGTTGTGTGG    +   Gene    0   Sequence    Score   0
 AJCBK:1:1111:14232:8175_1:N:0:AGCTTCAGCTGCCCTT +   Gene    0   Sequence    Score   0
 AJCBK:1:2101:5753:25007_1:N:0:AGCTTCAGCTGCCCTT +   Gene    0   Sequence    Score   0
 AJCBK:1:2101:8971:7239_1:N:0:AGCTTCAGGGTATGGC  +   Gene    0   Sequence    Score   0
 AJCBK:1:2102:15618:28054_1:N:0:AGATTCAGTTGTGTGG    +   Gene    0   Sequence    Score   0
 AJCBK:1:2106:15389:25632_1:N:0:AGCTTCAGTTGTATCT    +   Gene    0   Sequence    Score   0
 AJCBK:1:2113:17273:8419_1:N:0:AGCTTCAGCTGCCCTT +   Gene    0   Sequence    Score   0

正如您所见,每行根据前 23 个字符而有所不同,因此我无法单独在第一列上运行 uniq。我想根据最后 8 个字符删除所有重复项,所以它看起来像这样:

 AJCBK:1:1106:16747:8632_1:N:0:AGCTTCAGTTGTGTGG +   Gene    0   Sequence    Score   0
 AJCBK:1:1111:14232:8175_1:N:0:AGCTTCAGCTGCCCTT +   Gene    0   Sequence    Score   0
 AJCBK:1:2101:8971:7239_1:N:0:AGCTTCAGGGTATGGC  +   Gene    0   Sequence    Score   0
 AJCBK:1:2106:15389:25632_1:N:0:AGCTTCAGTTGTATCT    +   Gene    0   Sequence    Score   0

谢谢

【问题讨论】:

    标签: sorting uniq


    【解决方案1】:

    怎么样...

    gawk "{x=substr($1,length($1)-8,8); if (!seen[x]) {print $0}; seen[x]++}" data.txt
    

    它将字段1的最后8个字符放入x,跟踪seen中的模式,如果是新模式则打印整行,否则不打印。

    【讨论】:

    • 这真是太好了。我不知道有这样的东西存在。谢谢
    【解决方案2】:

    逐行读取您的文件,然后根据空间对其进行拆分。取拆分的第一个元素。这将是第一列的元素。现在取第一个元素的最后 8 个字符。在类似 python 的语言中,它会很简单:

    last_eight = complete[-8::1]
    

    如果你想在 C 中获得相同的结果;那么你将不得不使用 strtok 来标记化;然后获取令牌的长度并将最后 8 个字符复制到其他变量。这将为您提供比较字符串。

    执行这些步骤后;比较应该是微不足道的。您可以将所有这些比较字符串存储在一个数组中并执行蛮力比较。数组的索引将是行号。每当您找到重复项时,您都会通过数组的索引号知道行号

    【讨论】:

      猜你喜欢
      • 2017-11-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-04-08
      • 1970-01-01
      • 2021-07-04
      • 2015-10-15
      相关资源
      最近更新 更多