我有一個輸入的數據,如:檢查和計數複製行
chr17 41243232 41243373 BRCA1_ex11
chr17 41243232 41243373 BRCA1_ex12
chr17 41243471 41243644 BRCA1_ex11
chr17 41243639 41243811 BRCA1_ex11
chr13 32954112 32954208 BRCA2_ex23
chr13 32954112 32954208 BRCA2_ex24
,我需要檢查重複行$2
和$3
行,如果是重複的,我需要合併成一個線和$4
列打印用逗號分隔。
輸出:
chr17 41243232 41243373 BRCA1_ex11,BRCA1_ex12
chr17 41243471 41243644 BRCA1_ex11
chr17 41243639 41243811 BRCA1_ex11
chr13 32954112 32954208 BRCA2_ex23,BRCA2_ex24
是否有任何AWK解決簡單的過程,這樣的數據?我將不勝感激解釋。輸入和輸出是製表符分隔的格式。注意:第一,第二和第三個字段是相等的。
我的嘗試是:
awk -v OFS="\t" '{i=$2 FS $1 FS $3 FS $4} {a[i]=!a[i]?$4:a[i] "," $4} END {for (l in a) {print l,a[l]}}' infile
謝謝你的任何想法。
如果第一個字段不同而第二個和第三個字段相同會怎麼樣?你有沒有嘗試過任何一個機會? –
@JamesBrown謝謝你的好問題。第一場與第二場和第三場相同。是的,我試圖在awk中進行數組 - 但仍然是自學。我將編輯我的帖子.. – Paul