我有一個文件,其中有一個記錄的條目,然後下面的行是關聯的外顯子。有時候,這可能是一個外顯子等一個後續行,有時也有「N」個外顯子等「N」後續行,像這樣:如果接下來兩行匹配,打印行+下兩行awk
1 Cufflinks transcript 63846957 63847511
1 Cufflinks exon 63846957 63847511
1 Cufflinks transcript 63851691 63852040
1 Cufflinks exon 63851691 63852040
2 Cufflinks transcript 8442356 8443964
2 Cufflinks exon 8442356 8442368
2 Cufflinks exon 8443768 8443964
2 Cufflinks exon 8444000 8444578
2 Cufflinks transcript 8258988 8259803
2 Cufflinks exon 8258988 8259271
2 Cufflinks exon 8259370 8259803
我想打印出的成績單和相關的外顯子線僅如果在成績單後有兩個外顯子。對於這個例子,只會提取最後三行(一個轉錄本行和兩個外顯子行)。
這怎麼用awk來完成?
謝謝您的回答。你介意解釋一下代碼嗎?我仍然試圖教自己bash/awk。 – zoe
我試圖儘可能保持代碼的可讀性和自解釋性,但這取決於您的經驗水平。你有什麼具體的問題嗎? –
我覺得我很困惑,因爲print_if_two_exons()被調用兩次?一旦END和一次$ 3 ==轉錄?我也不太明白number_of_exons是如何填充的?對不起,我幾乎是初學者。 – zoe