bash - sed 删除第一个模式之后的所有内容(仅在该行中)
问题描述
假设我有一个文件,例如
>Species_Name|KIOOL
AATATATATACACACAAGAGAGGA
>SPECIES_name|KUI
AATTAGAGAGA
>Species_names|POPPO
ATATGAATATA
我怎么能在 bash 中获得一个新文件,例如:
>Species_Name
AATATATATACACACAAGAGAGGA
>SPECIES_name
AATTAGAGAGA
>Species_names
ATATGAATATA
我试过sed 's@|*@@'g my file
但它不起作用
谢谢
解决方案
|*
匹配零个或多个竖线。您似乎想要匹配一个垂直条,后跟零个或多个字母数字字符。尝试:
$ sed 's/|[[:alnum:]]*//' file
>Species_Name
AATATATATACACACAAGAGAGGA
>SPECIES_name
AATTAGAGAGA
>Species_names
ATATGAATATA
在修订后的问题中,您可能希望删除第一个竖线之后的所有内容。在这种情况下,替换[[:alnum:]]
为.
since.
匹配任何内容:
$ sed 's/|.*//' file
>Species_Name
AATATATATACACACAAGAGAGGA
>SPECIES_name
AATTAGAGAGA
>Species_names
ATATGAATATA
推荐阅读
- r - dplyr 中的乘法以获得多行
- excel - 在 sumifs 中查找两个名字
- numpy - 使用可变长度 DataArray 索引 xarray 数据
- python - 用于“manage.py runserver”的 azure 上的烧瓶启动命令
- css - @import 和 @use SCSS 规则有什么区别?
- javascript - React material-table:更改树展开图标
- c - 为什么当我输入一个特定的数字时,我得到一个完全不同的数字?
- javascript - 如何在 manyToOne 关系中插入数据?巢穴
- android - 如何检查内容uri是图像还是视频?
- c# - Xamarin Android:绑定套接字错误(机器不在网络上)