너무 오랫동안 이것을 놀려서 grep, Join, awk를 시도했지만 매개변수를 올바르게 얻을 수 없습니다. 명령을 올바르게 실행해야 합니다.
두 개의 텍스트 파일이 있습니다.
고양이 파일 1
@ABC:11:ABC:1:1111:1111:1111
@ABC:22:ABC:1:1111:4444:4444
고양이 파일 2
@ABC:11:ABC:1:1111:1111:1111 1:N:0:TCCCGCGC+AGGCGGGG
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+
#FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
@ABC:11:ABC:1:1111:2222:2222 1:N:0:TCCCGCGC+AGGCGGGG
AGGCGGGGAGGCGGGGAGGCGGGGAGGCGGGGAGGCGGGGAGGCGGGGAGGCGGGGAGGCGGGG
+
#FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
@ABC:22:ABC:1:1111:3333:3333 1:N:0:TCCCGCGC+AGGCGGGG
AGGCGGGGAGGCGGGGAGGCGGGGAGGCGGGGAGGCGGGGAGGCGGGGAGGCGGGGAGGCGGGG
+
#FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
@ABC:22:ABC:1:1111:4444:4444 1:N:0:TCCCGCGC+AGGCGGGG
TTTTTTTTTTTTTGGGGGGGGGGGGGGGGTTTTTTTTTTTTTTTTTTTGGGGGGGGGGGGGGGGGGGG
+
#FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
나는 두 가지 일을 하고 싶다:
출력1)file1을 기반으로 문자열과 두 개의 추가 문자열을 포함하는 모든 줄을 추출합니다.
출력 2)file1을 기준으로 다음 조건과 일치하는 모든 라인을 추출합니다.원하지 않는다문자열과 두 개의 추가 줄이 포함되어 있지만 @..로 시작하는 줄만 일치시키려고 해야 합니다.
출력 예 1):
고양이 출력 1
@ABC:11:ABC:1:1111:1111:1111 1:N:0:TCCCGCGC+AGGCGGGG
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+
#FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
@ABC:22:ABC:1:1111:4444:4444 1:N:0:TCCCGCGC+AGGCGGGG
TTTTTTTTTTTTTGGGGGGGGGGGGGGGGTTTTTTTTTTTTTTTTTTTGGGGGGGGGGGGGGGGGGGG
+
#FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
출력 예 2)
고양이 출력 2
@ABC:11:ABC:1:1111:2222:2222 1:N:0:TCCCGCGC+AGGCGGGG
AGGCGGGGAGGCGGGGAGGCGGGGAGGCGGGGAGGCGGGGAGGCGGGGAGGCGGGGAGGCGGGG
+
#FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
@ABC:22:ABC:1:1111:3333:3333 1:N:0:TCCCGCGC+AGGCGGGG
AGGCGGGGAGGCGGGGAGGCGGGGAGGCGGGGAGGCGGGGAGGCGGGGAGGCGGGGAGGCGGGG
+
#FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
(Perl을 사용하지 마십시오)
답변1
당신이 보여주고 요구하는 것은 grep fastq 파일에서 주어진 읽기 세트입니다. 바퀴를 재발명하지 말고 기존 도구를 사용하는 것이 좋습니다.seqkit grep그것을 위해.
그래도 "bash 전용" 변형은 다음과 같습니다.
4개의 연속 라인이 하나의 읽기에 속합니다. 따라서 모든 항목을 탭으로 구분하여 한 줄에 배치하고 ID를 검색하여 탭을 다시 새 줄로 변환할 수 있습니다.
$ cat file2.fq|paste - - - -|grep -f file1.txt|tr "\t" "\n"
또는 두 번째 출력의 경우 invert 매개변수를 사용합니다.grep
$ cat file2.fq|paste - - - -|grep -v -f file1.txt|tr "\t" "\n