2015-07-12 56 views
4

我想用awk解析制表符分隔的表 - 第一列有几个重复的条目,我需要删除其他4列总和较小的重复行在桌子里。我可以很容易地删除第一行或第二行,并对列进行求和,但是我无法将两者结合起来。为了我的目的,永远不会有超过2个副本。结合awk脚本的问题

实施例的文件:在这种情况下http://pastebin.com/u2GBnm2D

希望的输出是删除的行:

lmo0330 1  1  0  1 
lmo0506 7  21  2  10 

并保持与其它两行与列相同基因的id。最后解析的文件应该是这样的:http://pastebin.com/WgDkm5ui

这是我曾尝试(这并不做任何事情,但第一部分去除第二副本,而第二部分总和计数):

awk 'BEGIN {!a[$1]++} {for(i=1;i<=NF;i++) t+=$i; print t; t=0}' 

我试图修改脚本的第二部分在这个问题的最佳答案:Removing lines containing a unique first field with awk?

awk 'FNR==NR{a[$1]++;next}(a[$1] > 1)' ./infile ./infile 

但不幸的是我真的不明白这是怎么回事不够好,得到它的工作。谁能帮我吗?我想我需要更换a[$1] > 1部分用[删除(第一重复计数或第二的副本计数取决于哪一个更大]

编辑:。我还使用了GNU AWK 3.1.7如果该事项

+0

你的问题是好的,但它是h想明白,你到底想要什么。 – peterh

+0

我在解析后添加了一个输出结果的链接,这有助于澄清问题吗? – 1225

+0

这是一个非常古老的gawk版本,你应该更新它,因为你缺少很多非常有用的功能。 –

回答

3

您可以使用此命令awk

awk 'NR == 1 { 
    print; 
    next 
} { 
    s = $2+$3+$4+$5 
} s >= sum[$1] { 
    sum[$1] = s; 
    if (!($1 in rows)) 
     a[++n] = $1; 
    rows[$1] = $0 
} END { 
    for(i=1; i<=n; i++) 
     print rows[a[i]] 
}' file | column -t 

输出:

gene  SRR034450.out.rpkm_0 SRR034451.out.rpkm_0 SRR034452.out.rpkm_0 SRR034453.out.rpkm_0 
lmo0001 160     323     533     293 
lmo0002 135     317     504     306 
lmo0003 1      4      5      3 
lmo0004 35     59     58     48 
lmo0005 113     218     257     187 
lmo0006 279     519     653     539 
lmo0007 563     1053     1165     1069 
lmo0008 34     84     203     107 
lmo0009 13     45     90     49 
lmo0010 57     210     237     169 
lmo0011 65     224     247     179 
lmo0012 65     226     250     215 
lmo0013 342     500     738     682 
lmo0014 662     1032     1283     1311 
lmo0015 321     413     631     637 
lmo0016 175     253     273     325 
lmo0017 3      6      6      6 
lmo0018 33     38     46     45 
lmo0019 13     1      39     1 
lmo0020 3      12     28     15 
lmo0021 3      4      14     12 
lmo0022 2      3      5      1 
lmo0023 2      0      3      2 
lmo0024 1      0      2      6 
lmo0330 1      1      1      3 
lmo0506 151     232     60     204 
+2

谢谢!我会明天运行它 – 1225

+1

从来没有见过压缩/格式非常类似 - 剪切/粘贴问题? –

+1

Welp ...这不符合预期。这里是我的完整文件:http://pastebin.com/hPnBw8RU和运行awk脚本的输出文件:http://pastebin.com/6ghVFVDK ...不知怎的,它删除了不重复的基因名称,而且我也没有知道为什么:/在这个例子中只有3个重复项。 – 1225