我試圖改變數千行長的DNA序列'標題'行內的列/字段。具體而言,我想改變報頭(compX_seqy)的第一個字段,它總是開始與「>」:AWK - 替換匹配行上的特定列,然後打印其他行
只是第一兩個序列的一個例子:
#cat example
>comp0_seq1 444 [12:23]
AGAGGACAC
GATCCAACATA
AGASCAC
>comp0_seq2 333 [12:32:599:1]
GTCGATC
CYAACY
CCCCA
...
我想添加一個「A」到第一柱的端部只,對於所有行開始「>」,
comp0_seq1A
然後打印該行的其餘部分,然後NEX t行(序列),直到達到下一個「>」行(並重復)。
我所要的輸出是這樣的:
>comp0_seq1A 444 [12:23]
AGAGGACAC
GATCCAACATA
AGASCAC
>comp0_seq2A 333 [12:32:599:1]
GTCGATC
CYAACY
CCCCA
...
我想這第一:
awk '$1=$1"A"' example
>comp0_seq1A 444 [12:23]
AGAGGACACA
GATCCAACATAA
AGASCACA
>comp0_seq2A 333 [12:32:599:1]
GTCGATCA
CYAACYA
CCCCAA
A
A
它增加了一個A到所有行的第一場,所以不大。
然後我想這一點,使用一個正則表達式來代替僅在啓動用線「>」
# awk '/^>/ {print $1=$1"A";getline;print $0}' example
>comp0_seq1A
AGAGGACAC
>comp0_seq2A
GTCGATC
但是,只打印第一線賽後。那麼,如何在匹配/替換後直到下一個「>」打印全部/任何行?我試圖使用'下一個',但我想我不明白如何在這種情況下使用它。
有什麼建議嗎?我知道我很近,正在敲擊我的鍵盤。
Thx,LP。
很好的答案。使用sed,我會使用「空白」字符類編寫'sed'/ ^> [^ [:blank:]] \ +/s //&A /'',以防該文件中有選項卡。 –
感謝您的所有選擇。使用sed/substitute很簡單,可以用額外的字符替換空間。 –
@glennjackman - 啊,偉大的建議使用'&'以及。我會保留我的答案,因爲它似乎與OP的數據一起工作,但感謝您的評論;它無疑會幫助其他可能有相似但不完全相同問題的人。 – ghoti