Unix의 grep을 사용하여 파일 내의 특정 시퀀스를 검색하려고합니다. 파일은 대개 A, T, C 및 G의 매우 큰 (~ 1Gb) 파일입니다. 이 파일은 또한 많은 행을 포함하며 각 행은 60 자의 단어입니다. 내가 가지고있는 문제는 이러한 파일 내에서 특정 시퀀스를 검색 할 때 grep은 한 줄에 나타나는 패턴에 대한 결과를 반환하지만 패턴이 줄 (중간에 줄 바꿈이 있음)이 아닌 경우 결과를 반환한다는 것입니다. 예를 들어 :grep을 사용하여 DNA 시퀀스 파일 검색
(나는 두 별의 대상 'GACGGCT의를 넣어) 파일 grep3.txt 검색
GGGCTTCGA**GACGGCT**GACGGCTGCCGTGGAGTCT
CCAGACCTGGCCCTCCCTGGCAGGAGGAGCCTG**GA
CGGCT**AGGTGAGAGCCAGCTCCAAGGCCTCTGGGC
CACCAGGCCAGCTCAGGCCACCCCTTCCCCAGTCA
CCCCCCAAGAGGTGCCCCAGACAGAGCAGGGGCCA
GGCGCCCTGAGGC**GACGGCT**CTCAGCCTCCGCCCC
반환
3:GGGCTTCGAGACGGCTGACGGCTGCCGTGGAGTCT
8:GGCGCCCTGAGGCGACGGCTCTCAGCCTCCGCCCC
그래서 위해
$ grep -i -n "GACGGCT" grep3.txt
를 사용하여, 내 문제는 여기서 grep
은 라인 2의 끝 부분에있는 GACGGCT
을 찾지 못합니다.
grep을 사용하여 문자열의 어느 지점에서 줄 바꿈을 포함 할 수도 있고 포함하지 않을 수도있는 대상 시퀀스를 어떻게 찾을 수 있습니까? 또는 grep
에 대상 문자열에서 줄 바꿈을 무시한다고 어떻게 말할 수 있습니까? 이 작업을 수행하는 간단한 방법이 있습니까?
가 어떻게 시퀀스가 시작 위치를 알고 중지합니까? 예를 들어 시퀀스는 40 문자 만이어서 40 문자 시퀀스 이후에 나눌 수 있습니다. 줄 바꿈을 무시하면 grep은 전체 파일을 단일 찾은 항목으로 반환합니다. 위의 설명에 +1에 –
+1; 또한,'grep' 결과는 시퀀스의 무작위 부분을 나타 내기 때문에 (전체 파일이 단일 시퀀스가 아닌 한) 무의미한 것처럼 보입니다. –
파일에 단일 문자열이 들어있는 경우 \ n을 제거하여 행을 결합 할 수 있습니다. 예를 들어'tr -d '\\ n'< inputfile > tempfile' – wildplasser