Предположим, вам не нужно просто знать, какие последовательности содержат недопустимые символы - вы также хотите знать, к какому каркасу относится каждая последовательность. Это может быть сделано; как это сделать, зависит от того, какой формат вывода вам нужен, а также от точной структуры данных.
Только для иллюстрации я сделаю следующие упрощающие предположения: «последовательности» могут содержать только заглавные буквы (которые могут быть действительными или недействительными - но не может быть знаков препинания или цифр и т. д. c.); и метки (строки, начинающиеся с >
) не содержат заглавных букв. Примечание. Если последовательности содержат только буквы, то нетрудно предварительно обработать файл для преобразования последовательностей в верхний регистр, а метки - в строчные, поэтому приведенное ниже решение будет работать.
В некоторых версиях GREP недопустимые символы отображаются другим цветом (см. Связанное изображение). Я нахожу это весьма полезным.
grep --no-group-separator -B 1 '[BDEFHIJKLMOPQRSUVWXYZ]' input_file
ВЫХОД:
>scaffold1|size69534
ACATAAGAGSTGATGATAGATAGATGCAGATGACAGATGANNGTGANNNNNNNNNNNNNTAGAT
>scaffold3|size67203
ATAGAGTAGAGAGAGAGTACAGATAGAGGAGAGAGATAGACNNNNNNACATYYYYYYYYYYYYYYYYY
>scaffold4|size66423
ACAGATAGCAGATAGACAGATNNNNNNNAGATAGTAGACSSSSSSSSSS