【发布时间】:2012-11-07 12:34:30
【问题描述】:
我有一个制表符分隔的文件,看起来像这样
chr1 12226559 12227059 TNFRSF1B
chr1 17051560 17052060
chr1 17053279 17053779
chr1 17338423 17338923 ATP13A2
ATP13A2
ATP13A2
chr1 19577574 19578074 EMC1
MRTO4
chr1 19578046 19578546 EMC1
MRTO4
chr1 19638239 19638739 AKR7A2
PQLC2
PQLC2
PQLC2
AKR7A2
PQLC2
我希望删除 column4 值重复的行。
前三列是坐标,在这些坐标中列出了我们找到的任何内容(在 col4 中),对于每个坐标,我只想有唯一的名称而不是重复的名称。
我想要这样的输出
chr1 12226559 12227059 TNFRSF1B
chr1 17051560 17052060
chr1 17053279 17053779
chr1 17338423 17338923 ATP13A2
chr1 19577574 19578074 EMC1
MRTO4
chr1 19578046 19578546 EMC1
MRTO4
chr1 19638239 19638739 AKR7A2
PQLC2
我尝试过的事情
sort -k 4 -u file
awk '{if($4==temp1){next;}else{print}temp1=$4}' file
没有用 :(
请帮忙
谢谢
【问题讨论】:
-
如果您将字段分隔符更改为制表符,我确信您的 awk 脚本会起作用。否则 awk 会在空白处分隔单词。
-
+1 用于示例数据、所需输出和解决方案尝试。祝你好运。
-
+1 我花了很长时间解决你的挑战 ;-)
-
@Angelo @dogbane 考虑 3 行:第一行是空的,最后是
AKR7A2;第二个填写chr1 19638239 19638739 AKR7A2;第三个与第一个相同。应该保留的线是什么?根据您的问题要求,我们应该保留第一个(空的)。但我的感觉会保留第二个(填充的)。请发表您的意见;-) 干杯 -
亲爱的,正如 dogbane 所建议的,我已经在输入文件中进行了编辑。请尝试使用新的输入示例文件。谢谢。
标签: python perl bash awk bioinformatics