regex - 替换管道字符“|”之间的字符串 和“_”使用 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
命令中提供解决方案,那就太好了。
解决方案
推荐阅读
- html - 引导布局未正确拆分卡片
- hadoop - Hive select * 显示 0 但 count(1) 显示返回数百万行
- date - 如何使用 EmEditor 自动删除行中的日期和时间?
- mongodb - Mongoose 查询多个填充字段
- android - 我正在尝试使用 google 提供的 android cardboard sdk 播放 youtube 视频,但我无法播放。这是我的代码
- java - JUnit5 订单执行 - 忽略 OrderAnnotation
- firebase - firebase init 错误:HTTP 错误:403,获取服务的权限被拒绝 [firebasedatabase.googleapis.com]
- python - 细化线条并调整输出 mondrianish 图像错误
- java - MySQL结果中的一张表没有更新
- adobe - 如何从 aem 工作台 6.3 创建归档 lca 文件