sed a удалить все после первого шаблона (только в строке) - PullRequest
1 голос
/ 24 мая 2019

допустим, у меня есть файл, например

>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 Ответ

3 голосов
/ 24 мая 2019

|* соответствует нулю или более вертикальных столбцов. Похоже, вы хотите сопоставить одну вертикальную черту, за которой следуют ноль или более буквенно-цифровых символов. Попробуйте:

$ 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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...