【发布时间】:2016-11-08 02:29:46
【问题描述】:
我正在尝试更改数千行长的 DNA 序列“标题”行中的列/字段。具体来说,我想更改标题的第一个字段(compX_seqy),它总是以“>”开头:
前两个序列的示例:
#cat example
>comp0_seq1 444 [12:23]
AGAGGACAC
GATCCAACATA
AGASCAC
>comp0_seq2 333 [12:32:599:1]
GTCGATC
CYAACY
CCCCA
...
我只想在第一列的末尾添加一个“A”,所有以“>”开头的行,
comp0_seq1A
然后打印该行的其余部分,然后打印下一行(序列),直到到达下一个“>”行(并重复)。
我希望输出看起来像这样:
>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
但这只会在匹配后打印第一行。那么,如何在匹配/替换之后打印所有/任何行,直到下一个“>”?我尝试使用“下一步”,但我想我不明白如何在这种情况下使用它。
有什么建议吗?我知道我很接近并且正在敲击键盘。
谢谢,LP。
【问题讨论】: