저는 유닉스를 처음 접했습니다!
fastq 파일에서 3개 이상의 As가 연속으로 포함된 읽기 수는 몇 개입니까?
egrep 'A{3}'를 사용하여 AAA가 몇 개인지 알려줍니다. 하지만 지금은 AAA 연속 3개 이상을 알고 싶습니다. 그러나 >=는 작동하지 않습니다. 이것을 결정하는 데 awk를 사용할 수 있습니까?
또한 정규식을 사용하여 4개 이상의 A 뒤에 T 이외의 항목이 있는 읽기 수를 확인하려면 어떻게 해야 합니까? (GC 또는 A) 따라서 A는 >= 4여야 하고 그 다음에는 GCorA가 되어야 합니다.
편집: 연속으로 3A라고 말하면 다음과 같은 의미입니다. GGCTAAAAAACGGAT
답변1
3개 이상이면 다음을 a
사용할 수 있습니다 a{3,}
. 예를 들어:
$ echo a | grep -E 'a{3,}'
$ echo aa | grep -E 'a{3,}'
$ echo aaa | grep -E 'a{3,}'
aaa
$ echo aaaa | grep -E 'a{3,}'
aaaa
$ echo aaaaaaaaaa | grep -E 'a{3,}'
aaaaaaaaaa
3개 이상의 a
s 다음에 a가 아닌 항목이 오는 경우 다음과 같이 t
사용할 수 있습니다 .a{3,}[^t]
$ echo aaa | grep -E 'a{3,}[^t]'
$ echo aaat | grep -E 'a{3,}[^t]'
$ echo aaax | grep -E 'a{3,}[^t]'
aaax
그러나 an은 a
a가 아니므 t
로 'aaaa'와 같은 항목과 일치하며 그 a
뒤에는 a가 아닌 문자가 옵니다 t
(이 경우 a
).
$ echo aaaa | grep -E 'a{3,}[^t]'
aaaa
a
문자열이 is도 아니고 is도 아닌 것으로 끝나도록 하려면 다음을 t
사용할 수 있습니다 a{3,}[^at]
. 예를 들어:
$ echo aaaa | grep -E 'a{3,}[^ta]'
$ echo aaaaaaaa | grep -E 'a{3,}[^ta]'
$ echo aaaaaaaattt | grep -E 'a{3,}[^ta]'
$ echo aaaaaaaab | grep -E 'a{3,}[^ta]'
aaaaaaaab
답변2
세 개 이상의 시퀀스 수를 인쇄하려면 A
다음을 시도하십시오.
awk '{print gsub (/AAAA*/, "&")}' file
3
4
4
1
두 번째 요청의 경우 위의 내용을 수정하세요.
awk '{print gsub (/AAAAA*[CG]/, "&")}' file
"Followed by A"는 A* 패턴으로 재정의되었습니다.
답변3
fastq 파일에서 3개 이상의 As가 연속으로 포함된 읽기는 몇 개입니까?
fastq 형식 파일이므로 정확한 개수를 얻으려면 모든 행이 아닌 실제 시퀀스 행만 보아야 합니다. 변수를 사용하여 각 4줄 시퀀스 블록의 두 번째 줄로 일치를 제한하면 NR
이를 달성 할 수 있습니다.
awk 'NR%4 == 2 && /AAA/ { count++ } END { print count+0 }' foo.fastq
4개 이상의 A와 T 이외의 항목이 뒤따르는 읽기가 몇 번이나 실행되었습니까? (GC 또는 A)
awk 'NR%4 == 2 && /AAAA([^T]|$)/ { count++ } END { print count+0 }' foo.fastq
AAAAAT
( 4개의 A와 그 뒤에 또 다른 A가 있으므로 일치합니다 .)