使用 sed 在 FASTA header 行的开头和结尾添加单词
Add words at beginning and end of a FASTA header line with sed
我有以下行:
>XXX-220_5004_COVID-A6
TTTATTTGACATGAGTAAATTTCCCCTTAAATTAAGGGGTACTGCTGTTATGTCTTTAAA
AGAAGGTCAAATCAATGATATGATTTTATCTCTTCTTAGTAAAGGTAGACTTATAATTAG
AGAAAACAAC
我想将第一行转换为:
>INITWORD/XXX-220_5004_COVID-A6/FINALWORD
TTTATTTGACATGAGTAAATTTCCCCTTAAATTAAGGGGTACTGCTGTTATGTCTTTAAA
AGAAGGT...
到目前为止,我已经成功添加了第一个单词,如下所示:
sed 's/>/>INITTWORD\//I'
那个returns:
>INITWORD/XXX-220_5004_COVID-A6
TTTATTTGACATGAGTAAATTTCCCCTTAAATTAAGGGGTACTGCTGTTATGTCTTTAAA
AGAAGGT
如何在第一行末尾添加 FINALWORD?
多换点就好了。 sed
让您可以方便地回忆与反向引用匹配的文本,因此只需将其嵌入到您要添加的内容之间即可。
sed 's%^>\(.*\)%>INITWORD//FINALWORD%I' file.fasta
我还添加了一个 ^
行首锚点,并切换为 %
定界符,因此不需要转义斜线。
更详细地说,s
命令的语法是 s/regex/replacement/flags
,其中 regex
是匹配要替换的文本的正则表达式,replacement
是替换它的文本。在正则表达式中,您可以使用分组括号 \(...\)
将一些匹配的文本提取到替换中;所以 </code> 指的是匹配第一组分组括号的任何内容, <code>
指的是第二组,等等。 /flags
是可选的单字符说明符,用于修改命令的行为;因此,例如,/g
标志表示要替换一行中的每个匹配项,而不仅仅是第一个匹配项(但我们只希望每行匹配一个,因此在这里没有必要或无用)。
I
标志是非标准的,但由于您正在使用它,我认为它对您有用。
我有以下行:
>XXX-220_5004_COVID-A6
TTTATTTGACATGAGTAAATTTCCCCTTAAATTAAGGGGTACTGCTGTTATGTCTTTAAA
AGAAGGTCAAATCAATGATATGATTTTATCTCTTCTTAGTAAAGGTAGACTTATAATTAG
AGAAAACAAC
我想将第一行转换为:
>INITWORD/XXX-220_5004_COVID-A6/FINALWORD
TTTATTTGACATGAGTAAATTTCCCCTTAAATTAAGGGGTACTGCTGTTATGTCTTTAAA
AGAAGGT...
到目前为止,我已经成功添加了第一个单词,如下所示:
sed 's/>/>INITTWORD\//I'
那个returns:
>INITWORD/XXX-220_5004_COVID-A6
TTTATTTGACATGAGTAAATTTCCCCTTAAATTAAGGGGTACTGCTGTTATGTCTTTAAA
AGAAGGT
如何在第一行末尾添加 FINALWORD?
多换点就好了。 sed
让您可以方便地回忆与反向引用匹配的文本,因此只需将其嵌入到您要添加的内容之间即可。
sed 's%^>\(.*\)%>INITWORD//FINALWORD%I' file.fasta
我还添加了一个 ^
行首锚点,并切换为 %
定界符,因此不需要转义斜线。
更详细地说,s
命令的语法是 s/regex/replacement/flags
,其中 regex
是匹配要替换的文本的正则表达式,replacement
是替换它的文本。在正则表达式中,您可以使用分组括号 \(...\)
将一些匹配的文本提取到替换中;所以 </code> 指的是匹配第一组分组括号的任何内容, <code>
指的是第二组,等等。 /flags
是可选的单字符说明符,用于修改命令的行为;因此,例如,/g
标志表示要替换一行中的每个匹配项,而不仅仅是第一个匹配项(但我们只希望每行匹配一个,因此在这里没有必要或无用)。
I
标志是非标准的,但由于您正在使用它,我认为它对您有用。