使用SED将捕获组替换为正则表达式模式

时间:2018-12-18 06:31:55

标签: linux unix sed

我需要一些有关sed命令的帮助,我认为这将有助于解决我遇到的问题。我基本上有很长的文本文件,看起来像这样:

>TRINITY_DN112253_co_g1_i2 Len=3873 path=[38000:0-183]
ACTCACGCCCACATAAT

ACT文本块继续进行,然后有更多遵循相同模式的文本块,但>后面的文本在数字上略有不同。我只想将此标题部分(后跟>的部分)替换为所有内容,直到我认为似乎合乎逻辑的sed命令的最后一个“ _”如下:

sed -i ‘s/>.*/TRINITY.*_/‘

但是,sed实际上是将每个标头更改为TRINITY。* _,而不是捕获我认为会的块。任何帮助表示赞赏!

(也为了清楚起见,我认为我的sed命令会将顶部标头块转换为此:

>TRINITY_DN112253_co_g1_
ACTCACGCCCACATAAT

1 个答案:

答案 0 :(得分:1)

这可能会有所帮助:

sed '/^>/s/[^_]*$//' file

输出:

>TRINITY_DN112253_co_g1_
ACTCACGCCCACATAAT

请参阅:The Stack Overflow Regular Expressions FAQ