在下面的awk
我試圖打印$10
= reference standard
和$3
值匹配的行。我的實際數據是幾千行tab-delimited
,所以輸入和輸出都設置爲tab-delimited
。謝謝 :)。awk打印行匹配並在字段中具有特定值
AWK
awk -F'\t' -v OFS='\t' 'FNR==NR{a[$0];next} $(NF-1)$NF=="referencestandard" && {A[$3];next}$3 in A in a{print}' file
awk: cmd. line:1: FNR==NR{a[$0];next} $(NF-1)$NF=="referencestandard" && {A[$3];next}$3 in A in a{print}
awk: cmd. line:1: ^syntax error
文件
#tax_id GeneID Symbol RSG LRG RNA t Protein p Category
9606 4200 ME2 NG_016198.1 NM_002396.4 NP_002387.1 reference standard
9606 2122 MECOM NG_028279.1 NM_004991.3 NP_004982.2 reference standard
9606 4204 MECP2 NG_007107.2 NM_004992.3 NP_004983.1 reference standard
9606 4204 MECP2 NG_007107.2 NM_001110792.1 NP_001104262.1 reference standard
所需的輸出
9606 4204 MECP2 NG_007107.2 NM_004992.3 NP_004983.1 reference standard
9606 4204 MECP2 NG_007107.2 NM_001110792.1 NP_001104262.1 reference standard
將'&&'放在'{'?此外,這些字段通過'$ NF'編號爲'$ 1'; 「$ 0」是整條線。根據顯示的數據判斷,「參考」和「標準」之間沒有標籤。 'FNR == NR'條件意味着文件被讀取,保存且不再存在;以下術語從不執行,因爲沒有第二個文件要讀取。你可以在'END'塊中完成。目前還不清楚'你的意思是'和'$ 3'值是否匹配' - 他們需要匹配什麼?你需要澄清你試圖找到的東西。一旦要求得到充分描述,就不難做到。 –
「$ 3」值匹配表示它們是相同的。每個「$ 3」值可能會重複多次,但通常只有一個「參考標準」的「$ 10」值。我試圖在那些不符合標準的文件中找到那些......這就是'$ 3'值相同而$ 10'是'參考標準'的地方。謝謝 :)。 – Chris
你必須更加精確。你的意思是兩個不同的行在'$ 3'中具有相同的值?不管其他領域有什麼?你想同時打印兩行?如果在$ 3中有三行具有相同的值,您想要打印3行還是3行?在你的樣本數據中,'$ 3'中的重複也會重複'$ 1'和'$ 2'(和$ 4')中的值 - 這很重要嗎? –