Удалить все, что не в скобках

Подумайте об упрощении с помощью расширения GNU find-path:

find. -type f -path "*/ExampleDir/*"

0
07.08.2019, 20:48
2 ответа

Сperl:

perl -ne 'push @l, ">". join("", /\[(.*?)\]/g). "\n". <>;
          END{print for sort @l}' your-file

Сsed:

<your-file sed 's/^[^[]*\[/>/
                s/\][^[]*\[\{0,1\}//g
                N;s/\n/\[/' |
  sort |
  tr '[' '\n'
1
28.01.2020, 02:29

Мое (запутанное )предложение:

cat file | grep -Po "^[CGTA-]*$|^>.*$" | grep -Po "(?<=\[).*(?=])|^[ACGT-]*$" | awk '{printf (NR%2==0) ? $0 "\n" : ">"$0"::"}' | sort | sed 's/#/\n/'

Grep только строки, содержащие символы CGTA-и строки, начинающиеся с>

grep -Po "^[CGTA-]*$|^>.*$"

Grep только то, что находится внутри скобок, исключая их и строки, соответствующие шаблонуACGT-

| grep -Po "(?<=\[).*(?=])|^[ACGT-]*$"

Соедините каждые две строки, добавив разделитель #и начальную >, затем отсортируйте

| awk '{printf (NR%2==0) ? $0 "\n" : ">"$0"#"}' | sort

Наконец, замените разделитель #новой строкой

| sed 's/#/\n/'

Выход:

>Archaeoglobus_fulgidus_DSM_4304.gbfspecies
ATGCGCGCGATAGCTAGCTAGCTAGCTTTAGGGGGATTAGCTA----ACTCTGATTCGGA
>Ignicoccus_hospitalis_KIN4-I.gbfspecies
ATGAGTGTGACTA---TTT---GCAATCAGCTAGCTACTACGTACTGATCGTAGCTGACG
1
28.01.2020, 02:29

Теги

Похожие вопросы