Regex 如何使用Linux命令提取Fasta文件中的部分头
我有一个具有唯一头的Fasta文件,我想在Unix中使用正则表达式提取该头的一部分 例如,我的Fasta文件以以下标题开头:Regex 如何使用Linux命令提取Fasta文件中的部分头,regex,linux,vim,Regex,Linux,Vim,我有一个具有唯一头的Fasta文件,我想在Unix中使用正则表达式提取该头的一部分 例如,我的Fasta文件以以下标题开头: >jgi|Penbr2|47586|fgenesh1_pm.1_#_25 我只想提取标题的最后一部分,如: >fgenesh1_pm.1_#_25 实际上,我在vim editor中使用了这个正则表达式,但它不起作用: :%s/^([^|]+\|){3}//g 或 如果给我一些建议,我会很合适。您可以使用sed: sed -e 's/>.*|/
>jgi|Penbr2|47586|fgenesh1_pm.1_#_25
我只想提取标题的最后一部分,如:
>fgenesh1_pm.1_#_25
实际上,我在vim editor中使用了这个正则表达式,但它不起作用:
:%s/^([^|]+\|){3}//g
或
如果给我一些建议,我会很合适。您可以使用
sed
:
sed -e 's/>.*|/>/' fasta-file
i、 e.
和|
之间的所有内容都将替换为
您可以使用sed
:
sed -e 's/>.*|/>/' fasta-file
i、 e.
和|
之间的所有内容都被
替换为我不知道前面的
是否也是您文本的一部分。假设他们不是
既然您标记了vim
,那么我就发布vim解决方案
您可以使用regex的“贪婪”:
在vim中:
%s/.*|//
离开最后一部分,这是最简单的方法
在vim中,您也可以使用\zs、\ze
和非贪婪匹配:
%s/\zs.\{-}\ze[^|]\+$//
当然,如果您喜欢分组,可以使用\(…\)
进行分组,而不使用\zs\ze
在代码中,只使用(…)
进行分组,而不进行转义。我不知道您是如何在vimrc中配置magic
设置的,如果您使用默认设置,您必须退出(和)
,以赋予它们特殊的含义(在这里分组)。就像我们用BRE做的一样。执行一个:h magic
,然后找到表格以了解差异
在vim do:h terms
中获取详细信息。我不知道前导的
是否也是文本的一部分。假设他们不是
既然您标记了vim
,那么我就发布vim解决方案
您可以使用regex的“贪婪”:
在vim中:
%s/.*|//
离开最后一部分,这是最简单的方法
在vim中,您也可以使用\zs、\ze
和非贪婪匹配:
%s/\zs.\{-}\ze[^|]\+$//
当然,如果您喜欢分组,可以使用\(…\)
进行分组,而不使用\zs\ze
在代码中,只使用(…)
进行分组,而不进行转义。我不知道您是如何在vimrc中配置magic
设置的,如果您使用默认设置,您必须退出(和)
,以赋予它们特殊的含义(在这里分组)。就像我们用BRE做的一样。执行一个:h magic
,然后找到表格以了解差异
在vim do:h terms
中获取详细信息。尝试s/^\([^ 124;]*.\+//g
。我也尝试了这个命令,但它找不到模式Trys/^\([^ 124;]*.\+//g
。我也尝试了这个命令,但它找不到模式