Я пытаюсь использовать grep Unix для поиска определенных последовательностей в файлах. Обычно файлы очень большие (~ 1Gb) «A», «T», «C» и «G». Эти файлы также охватывают много, много строк, каждая строка которых является словом 60 символов. Проблема, с которой я сталкиваюсь, заключается в том, что при поиске определенной последовательности в этих файлах grep возвращает результаты для шаблона, которые встречаются в одной строке, но не в том случае, если шаблон охватывает строку (имеет разрыв строки где-то посередине). Например:Использование grep для поиска файлов последовательности ДНК
Использование
$ grep -i -n "GACGGCT" grep3.txt
Для поиска файла grep3.txt (я поставил цель «GACGGCT-й в двойных звездах)
GGGCTTCGA**GACGGCT**GACGGCTGCCGTGGAGTCT
CCAGACCTGGCCCTCCCTGGCAGGAGGAGCCTG**GA
CGGCT**AGGTGAGAGCCAGCTCCAAGGCCTCTGGGC
CACCAGGCCAGCTCAGGCCACCCCTTCCCCAGTCA
CCCCCCAAGAGGTGCCCCAGACAGAGCAGGGGCCA
GGCGCCCTGAGGC**GACGGCT**CTCAGCCTCCGCCCC
Возвращает
3:GGGCTTCGAGACGGCTGACGGCTGCCGTGGAGTCT
8:GGCGCCCTGAGGCGACGGCTCTCAGCCTCCGCCCC
Итак, моя проблема здесь в том, что grep
не находит GACGGCT
, который охватывает конец строки 2, а be ginning строки 3.
Как использовать grep для поиска целевых последовательностей, которые могут включать или не включать строку в любую точку строки? Или как я могу сообщить grep
игнорировать строки в целевой строке? Есть ли простой способ сделать это?
Как вы знаете, где начинаются последовательности и остановки? Например, последовательность может состоять только из 40 символов, а затем после 40-символьной последовательности. Если вы игнорируете разрывы строк, grep просто вернет весь файл как одну найденную запись. –
+1 к комментарию выше; Кроме того, результаты «grep» кажутся довольно бессмысленными, поскольку они представляют случайные части последовательности (если весь файл не является единственной последовательностью). –
Если файл содержит одну строку, вы могли бы объединить строки, удалив \ n, например, с помощью 'tr -d '\\ n' < inputfile > tempfile' – wildplasser