将 fasta headers 重命名为括号内的文本
Renaming fasta headers to bracketed text
我有一个包含 250 个 fasta 序列的文件。现在,它们看起来像这样:
>NP_041982.1 DNA polymerase [Enterobacteria phage T7]
我想更改 header 使其看起来像这样:
>Enterobacteria phage T7
对于每个header,我只想要括号中的in-between。我试图通过 linux 命令来做到这一点。
有人可以帮忙吗?
file.fa 内容
>Sequence One [Species 1]
actgtattagctaatcgatcagttacgattcga
tagctacgtacgtacgatcgatcagtcagctag
>Sequence Two [Species 2]
ttgtagctagctagctagctagctagctacgta
tgcatcgatcgattaatatcgcgccctaactcg
>Sequence Three
atgatagtctggtcatcgattcagtcagttcat
ttgcatgatctactagatcgatattagctagat
>Sequence Four [early bracket] text
tagctacgtacgatcgtacgatcgatcgtatat
gctagtcgactagctagctacgtacgtacgtaa
sed 命令:
sed 's@^>[^\[]*\[\([^\]*\)]$@>@g' file.fa
看起来有点绕口,但意思是……
获取与“以 > 开头的行,后跟除 [,后跟除 ] 之外的任意数量的字符,后跟 ] 的模式匹配的任何字符串。捕获括号之间的字符串,并替换整个比赛只有括号里的东西。
打印输出
>Species 1
actgtattagctaatcgatcagttacgattcga
tagctacgtacgtacgatcgatcagtcagctag
>Species 2
ttgtagctagctagctagctagctagctacgta
tgcatcgatcgattaatatcgcgccctaactcg
>Sequence Three
atgatagtctggtcatcgattcagtcagttcat
ttgcatgatctactagatcgatattagctagat
>Sequence Four [early bracket] text
tagctacgtacgatcgtacgatcgatcgtatat
gctagtcgactagctagctacgtacgtacgtaa
可以使用
将输出保存到新文件中
sed 's@^>[^\[]*\[\([^\]*\)]$@>@g' file.fa > converted_filename.fa
请注意,任何没有匹配项的 headers 都会被打印 as-is,任何在最后一个括号之后有字符的行也会被打印 as-is。如果遇到未在同一行上关闭的左括号,可能会表现得很奇怪。我建议您仔细检查新文件的行数是否与原始文件相同。
我有一个包含 250 个 fasta 序列的文件。现在,它们看起来像这样:
>NP_041982.1 DNA polymerase [Enterobacteria phage T7]
我想更改 header 使其看起来像这样:
>Enterobacteria phage T7
对于每个header,我只想要括号中的in-between。我试图通过 linux 命令来做到这一点。
有人可以帮忙吗?
file.fa 内容
>Sequence One [Species 1]
actgtattagctaatcgatcagttacgattcga
tagctacgtacgtacgatcgatcagtcagctag
>Sequence Two [Species 2]
ttgtagctagctagctagctagctagctacgta
tgcatcgatcgattaatatcgcgccctaactcg
>Sequence Three
atgatagtctggtcatcgattcagtcagttcat
ttgcatgatctactagatcgatattagctagat
>Sequence Four [early bracket] text
tagctacgtacgatcgtacgatcgatcgtatat
gctagtcgactagctagctacgtacgtacgtaa
sed 命令:
sed 's@^>[^\[]*\[\([^\]*\)]$@>@g' file.fa
看起来有点绕口,但意思是…… 获取与“以 > 开头的行,后跟除 [,后跟除 ] 之外的任意数量的字符,后跟 ] 的模式匹配的任何字符串。捕获括号之间的字符串,并替换整个比赛只有括号里的东西。
打印输出
>Species 1
actgtattagctaatcgatcagttacgattcga
tagctacgtacgtacgatcgatcagtcagctag
>Species 2
ttgtagctagctagctagctagctagctacgta
tgcatcgatcgattaatatcgcgccctaactcg
>Sequence Three
atgatagtctggtcatcgattcagtcagttcat
ttgcatgatctactagatcgatattagctagat
>Sequence Four [early bracket] text
tagctacgtacgatcgtacgatcgatcgtatat
gctagtcgactagctagctacgtacgtacgtaa
可以使用
将输出保存到新文件中sed 's@^>[^\[]*\[\([^\]*\)]$@>@g' file.fa > converted_filename.fa
请注意,任何没有匹配项的 headers 都会被打印 as-is,任何在最后一个括号之后有字符的行也会被打印 as-is。如果遇到未在同一行上关闭的左括号,可能会表现得很奇怪。我建议您仔细检查新文件的行数是否与原始文件相同。