如何使用 sed 在字符串中重新定位模式?
how can I reposition patterns within a string using sed?
我有一个包含以下内容的 +20k 内含子序列的 fasta 文件 headers 我可以描述为:
>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*\) */ | /'
首先只是专注于重新定位,但无济于事。这可能是我混淆的转义。
任何提示或更好的解决方案?
不能 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_ | /g'
会给你
>NASCENT_ENST1 | ENSG1 | 1 | 3 | name1 |
ATG
>NASCENT_ENST2 | ENSG2 | 4 | 9 | name2 |
ATGATG
>NASCENT_ENST12 | ENSG12 | 10 | 17 | name12 |
ATGATGATG
我有一个包含以下内容的 +20k 内含子序列的 fasta 文件 headers 我可以描述为:
>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*\) */ | /'
首先只是专注于重新定位,但无济于事。这可能是我混淆的转义。
任何提示或更好的解决方案?
不能 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_ | /g'
会给你
>NASCENT_ENST1 | ENSG1 | 1 | 3 | name1 |
ATG
>NASCENT_ENST2 | ENSG2 | 4 | 9 | name2 |
ATGATG
>NASCENT_ENST12 | ENSG12 | 10 | 17 | name12 |
ATGATGATG