sed在第一个模式之后删除所有内容(仅在该行中)

时间:2019-05-23 22:32:04

标签: 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,但是它不起作用

谢谢

1 个答案:

答案 0 :(得分:3)

|*匹配零个或多个竖线。您似乎想要匹配一个垂直条,后跟零个或多个字母数字字符。试试:

$ sed 's/|[[:alnum:]]*//' file
>Species_Name
AATATATATACACACAAGAGAGGA
>SPECIES_name
AATTAGAGAGA
>Species_names
ATATGAATATA

在修改后的问题中,您似乎希望删除第一个竖线之后的所有内容。在这种情况下,请用[[:alnum:]]替换.,因为.会匹配任何内容:

$ sed 's/|.*//' file
>Species_Name
AATATATATACACACAAGAGAGGA
>SPECIES_name
AATTAGAGAGA
>Species_names
ATATGAATATA