вопрос по awk и sed
Добавлено: 2010-05-16 1:34:12
Есть файл типа
Необходимо привести к виду
Т.е. убрать разбиение по ширине на 80, склеить всё в строки, начинающиеся с ">", убрать лишние пробелы, оставив только между |SEQUENCE и последующим.
Решение уже написано, но оно получилось корявым трёхэтажным awk. Какой наиболее красивый способ?
Моё решение:
Код: Выделить всё
>10MH:A|PDBID|CHAIN|SEQUENCE
MIEIKDKQLTGLRFIDLFAGLGGFRLALESCGAECVYSNEWDKYAQEVYEMNFGEKPEGDITQVNEKTIPDHDILCAGFP
CQAFSISGKQKGFEDSRGTLFFDIARIVREKKPKVVFMENVKNFASHDNGNTLEVVKNTMNELDYSFHAKVLNALDYGIP
QKRERIYMICFRNDLNIQNFQFPKPFELNTFVKDLLLPDSEVEHLVIDRKDLVMTNQEIEQTTPKTVRLGIVGKGGQGER
IYSTRGIAITLSAYGGGIFAKTGGYLVNGKTRKLHPRECARVMGYPDSYKVHPSTSQAYKQFGNSVVINVLQYIAYNIGS
SLNFKPY
>10MH:C|PDBID|CHAIN|SEQUENCE
GTCAGCGCATGG
>10MH:B|PDBID|CHAIN|SEQUENCE
CCATGCGCTGAC
Код: Выделить всё
>10MH:A|PDBID|CHAIN|SEQUENCE MIEIKDKQLTGLRFIDLFAGLGGFRLALESCGAECVYSNEWDKYAQEVYEMNFGEKPEGDITQVNEKTIPDHDILCAGFPCQAFSISGKQKGFEDSRGTLFFDIARIVREKKPKVVFMENVKNFASHDNGNTLEVVKNTMNELDYSFHAKVLNALDYGIPQKRERIYMICFRNDLNIQNFQFPKPFELNTFVKDLLLPDSEVEHLVIDRKDLVMTNQEIEQTTPKTVRLGIVGKGGQGERIYSTRGIAITLSAYGGGIFAKTGGYLVNGKTRKLHPRECARVMGYPDSYKVHPSTSQAYKQFGNSVVINVLQYIAYNIGSSLNFKPY
>10MH:C|PDBID|CHAIN|SEQUENCE GTCAGCGCATGG
>10MH:B|PDBID|CHAIN|SEQUENCE CCATGCGCTGAC
(Первая и вторая строки - это одно целое, т.к. такие длины строк парсер переносит)Решение уже написано, но оно получилось корявым трёхэтажным awk. Какой наиболее красивый способ?
Моё решение:
Код: Выделить всё
gawk '{printf $0" "}' input.txt | gawk 'BEGIN {RS=">"} {if (NR!=1) {print ">"$0}}' | sed 's/ //g' | sed 's/|SEQUENCE/|SEQUENCE /' | grep :$j | tr " " "\n" >> a.out