2016-09-23 6 views
0

У меня есть файл, который содержит последовательность уже сломана в линии, что-то вроде этого:Как скопировать конец строки в grep?

CGCCCATGGGTCGTATACGTAATGGGAAAACAAAGCATGGTGTAACTATGGTAAGTGCTA 
GACAATACAAGAAGGCTGATATTTGTAGAATAATTCATTTGAATTATTATGCTGTAAATA 
GCTAGATTATTATGCATAATTACTTTGAGAGGTGATCAATCAATTCGACCCTTGCCAATT 

Я хочу найти конкретный образец в этом файле как GCTGTAAATAGCTAGATTA, например. Проблема заключается в том, что шаблон может быть разрезан новой строкой в ​​непредсказуемом месте.

можно использовать:

grep -e "pattern" file 

, но он не может избежать «новой линии» характер и не дает результата. Как я могу изменить свою команду, чтобы игнорировать \n в моем поиске?

Редактировать: Я не знаю, существует ли мой запрос в файле или нет, и если он есть, я не знаю, где он существует.

Лучшее решение, которое пришло мне в голову это

tr -d '\n' < file | grep -e "CTACCCCAGACAAACTGGTCAGATACCAACCATCAGCGAAACTAACCAAACAAA" 

, но я знаю, что должен быть более эффективные способы, чтобы сделать это.

+0

это отличается с этим вопросом, в этом вопросе, он знает, что эти два слова на разных линиях, так что он может поставить побег символ между ними. Но в моем случае я не знаю, где я должен положить \ n в свой запрос. Поэтому даже нижний ответ тоже не работает. – user2373198

+0

, например, посмотрите на ответ «abc. * (\ N |.) * Efg 'test.txt, он знает, что должен положить \ n между abc и efg. – user2373198

ответ

-1
pattern="GCTGTAAATA"$'\n'"GCTAGATTA" # $'\n' is Bash's way of mentioning special chars 
grep -e "$pattern" file 

ИЛИ

pattern="GCTGTAAATA 
GCTAGATTA" # with an actual newline at the end of the first line 
grep -e "$pattern" file 
+0

Я не знаю, где я должен положить «\ n», потому что я не знаю, существует ли этот шаблон в файле или нет, и я не знаю, в какой строке он существует. – user2373198

+0

@ user2373198 о, я вижу. – euphoria83