Bash 在fasta序列名称中添加标记
我需要帮助。 我有一个fasta文件,例如:Bash 在fasta序列名称中添加标记,bash,awk,sed,bioinformatics,fasta,Bash,Awk,Sed,Bioinformatics,Fasta,我需要帮助。 我有一个fasta文件,例如: >YP_00698.1 hypothetical protein sp [Species 1] MDMQFGYFTRNPSTKYPATLYPREVSCALYEDDNENTSLIPKSRHYHYTIQPPINYKKLTNVDRYKNFRL >YP_0098.1 hypothetical protein sp [Species 2] MDMQFGYFTRNPSTKYPATLYPREVSCALYEDDNENTSLIPKSRHYHYTIQPPI
>YP_00698.1 hypothetical protein sp [Species 1]
MDMQFGYFTRNPSTKYPATLYPREVSCALYEDDNENTSLIPKSRHYHYTIQPPINYKKLTNVDRYKNFRL
>YP_0098.1 hypothetical protein sp [Species 2]
MDMQFGYFTRNPSTKYPATLYPREVSCALYEDDNENTSLIPKSRHYHYTIQPPINYKKLTNVDRYKNFRL
>YP_009378.1 hypothetical protein sp [Species 3]
MEDNTAEDIIKNHLLNTSNDDDDDADSLKKKKENIDDIVKESKNVNLFFISYIKAYNDLVLFLKQQEIVFINILHLNNLNLSIYNLLQKCYSTKDKYKFLPDNNKNLLQLILTLKKNVKFRLKRLKDK
我正在寻找一个bash方法,以便在Seqnames之后添加“\u CT”
,因此我应该得到:
>YP_00698.1_CT hypothetical protein sp [Species 1]
MDMQFGYFTRNPSTKYPATLYPREVSCALYEDDNENTSLIPKSRHYHYTIQPPINYKKLTNVDRYKNFRL
>YP_0098.1_CT hypothetical protein sp [Species 2]
MDMQFGYFTRNPSTKYPATLYPREVSCALYEDDNENTSLIPKSRHYHYTIQPPINYKKLTNVDRYKNFRL
>YP_009378.1_CT hypothetical protein sp [Species 3]
MEDNTAEDIIKNHLLNTSNDDDDDADSLKKKKENIDDIVKESKNVNLFFISYIKAYNDLVLFLKQQEIVFINILHLNNLNLSIYNLLQKCYSTKDKYKFLPDNNKNLLQLILTLKKNVKFRLKRLKDK
我试过:
sed 's/^\(>.*\)$/\1 _CT/' fastafile.fa
但是最后我得到了“\u CT”
谢谢你的帮助 这可以用
awk
轻松完成,请尝试以下操作
awk '/^>/{$1=$1"_CT"} 1' Input_file
说明:为上述awk
code添加说明
awk ' ##Starting awk program here.
/^>/{ ##Checking condition if a line starts from > then do following.
$1=$1"_CT" ##Setting value of $1 to $1 and concatenating _CT to it too.
} ##Closing BLOCK for this condition here.
1 ##Mentioning 1 will print edited/non-edited line.
' Input_file ##Mentioning Input_file name here.
sed
解决方案:
sed '/^>/s/\([^ ]*\)\(.*\)/\1_CT\2/' Input_file
问题是,
*
可以并且将匹配整行,特别是当您的搜索模式包括$
的“行尾”锚时。改为使用只能与序列名称匹配的内容,例如[^]*
(连续的非空格字符序列):
您可以。您可以像这样使用
sed
sed 's/^>[^[:space:]]\{1,\}/&_CT/' fastafile.fa > newfastafile.fa
sed 's/^>[^ \t]\{1,\}/&_CT/' fastafile.fa > newfastafile.fa
sed -E 's/^>[^ \t]+/&_CT/' fastafile.fa > newfastafile.fa
见
详细信息
-字符串的开头^
-a
字符
-1个或多个字符(除空格外)。注[^[:space:][\{1,\}
可以写成POSIX ERE模式中的\{1,0\}
(使用+
或-E
选项启用)-r
替换部分中的
&
代表整个匹配值。只需将每行的第一个空格替换为\u CT
:
sed 's/ /_CT /' input_file.fasta
这应该足够了,因为FASTA序列线不应包含任何空格
sed 's/ /_CT /' input_file.fasta