sed 或 awk:删除符号后的数字

Ale*_*lex 4 sed awk delete

我只想删除“>”符号后的数字和“_”,例如:

>1_CR-B_CR56_t
MTKIIKFVYFMTIFISPNHHCPVYNCTHPKQPWCKLVRLQLLFHGSLIGLCDCI
>2_R-B_R46_t
MVEVTKLVNVMLIFLTLSPLVYDCQAYECELPFKPDCLMVEYSPQFVALRCGCV
>3000_N-N274_M
MVEVTKLVNVMLIFLTLFVYTDSDCQAYACELPFKPDCLMVEYAPQFFRLACGCV
Run Code Online (Sandbox Code Playgroud)

预期成绩:

>CR-B_CR56_t
MTKIIKFVYFMTIFISPNHHCPVYNCTHPKQPWCKLVRLQLLFHGSLIGLCDCI
>R-B_R46_t
MVEVTKLVNVMLIFLTLSPLVYDCQAYECELPFKPDCLMVEYSPQFVALRCGCV
>N-N274_M
MVEVTKLVNVMLIFLTLFVYTDSDCQAYACELPFKPDCLMVEYAPQFFRLACGCV
Run Code Online (Sandbox Code Playgroud)

我使用过,sed "s/>[0-9][_]//g"但它也删除了“>”。

jes*_*e_b 8

只需对您的sed命令稍作修改:

sed 's/^>[0-9]\+[_]/>/g'
Run Code Online (Sandbox Code Playgroud)

s是 sed替代命令,它搜索左侧的字符串并将其替换为右侧的字符串。您可以将其替换为>您想要保留的字符,而不是用任何东西替换它。

^ 用于指定匹配只应从换行符的开头开始

此外,*用于匹配多个数字。

  • 您可能还需要行开始锚点 (`^`)。用 `\+` 代替 `*` 来表示 **one** 或更多的数字。 (3认同)