2015-07-12 60 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