如何使用sed在字符串中重新定位模式?

时间:2016-06-06 14:01:23

标签: regex sed bioinformatics

我有一个+ 20k内含序列的fasta文件,其中包含以下标题:

>ENSG[0-9] | ENST[0-9] | start_position | end_position | name |

我想更改ENSG [0-9]和ENST [0-9]的位置,并将“NASCENT”添加到ENST [0-9]模式。

我试过了:

sed 's/\(ENSG\d*\) *| *\(ENST\d*\) */\2 | \1/'

首先只关注重新定位,但无济于事。我可能已经感到困惑了。

任何提示或更好的解决方案?

1 个答案:

答案 0 :(得分:0)

不是100%确定我的输入格式是否正确,但是如果示例文件需要这样:

>ENSG1 | ENST1 | 1 | 3 | name1 |
ATG
>ENSG2 | ENST2 | 4 | 9 | name2 |
ATGATG
>ENSG12 | ENST12 | 10 | 17 | name12 |
ATGATGATG

使用以下参数调用sed:

sed 's/\(ENSG[0-9]\+\).*\(ENST[0-9]\+\)\(.*\)/NASCENT_\2 | \1\3/g' 

会给你

>NASCENT_ENST1 | ENSG1 | 1 | 3 | name1 |
ATG
>NASCENT_ENST2 | ENSG2 | 4 | 9 | name2 |
ATGATG
>NASCENT_ENST12 | ENSG12 | 10 | 17 | name12 |
ATGATGATG