首页 > 解决方案 > 替换管道字符“|”之间的字符串 和“_”使用 sed

问题描述

我正在努力sed在我的管道中实现这个命令。我有以下字符串:

>A0A7I8LN48|A0A7I8LN48_SPIIN Hypothetical protein OS=Spirodela intermedia OX=51605 GN=SI8410_18021754 PE=4 SV=1

我想从“|”中删除所有内容 字符 管道字符之后的第一个“_”的开头。所以输出应该看起来像这样:

>A0A7I8LN48_SPIIN Hypothetical protein OS=Spirodela intermedia OX=51605 GN=SI8410_18021754 PE=4 SV=1

我尝试了以下方法:

sed 's/|.*_/_/'

删除太多,返回我:>A0A7I8LN48_18021754 PE=4 SV=1 然后我尝试将模式匹配限制到第一个“_”,.*?如下所示:

sed 's/|.*?_/_/'

但这与任何内容都不匹配,并返回了相同的输入字符串。有人可以帮我吗?我在这里想念什么?如果可以在sed命令中提供解决方案,那就太好了。

标签: regexbashsedgnu

解决方案


推荐阅读