나는 일반적으로 Linux를 처음 접했고 누군가가 나를 도울 수 있기를 바랐습니다.
4개의 서로 다른 시퀀싱 레인에서 fastq.gz 파일을 병합하고 싶습니다. 각 파일에는 다음과 같은 이름이 있습니다. 샘플 이름, 레인(1~4) 참조, GC082_F4.lane1.1901.R1.fastq.gz
정방향 또는 역방향 읽기 참조("R1"은 역방향, "R2"는 정방향).GC082_F4
laneX
R1
각 샘플에 대해 4개의 서로 다른 채널의 파일을 연결하여 각각 정방향 읽기(R1) 및 역방향 읽기(R2)에 사용하고 싶습니다. 따라서 이 특정 예의 경우 다음과 같습니다.
전달되는 내용은 다음과 같습니다.
cat GC082_F4.lane1.1901.R1.fastq.gz \
GC082_F4.lane2.1901.R1.fastq.gz GC082_F4.lane3.1901.R1.fastq.gz \
GC082_F4.lane4.1901.R1.fastq.gz > GC082_F4.R1.fastq.gz
거꾸로 읽어보세요:
cat GC082_F4.lane1.1901.R2.fastq.gz \
GC082_F4.lane2.1901.R2.fastq.gz GC082_F4.lane3.1901.R2.fastq.gz \
GC082_F4.lane4.1901.R2.fastq.gz > GC082_F4.R2.fastq.gz
하지만 +100개의 샘플에 대해 이 작업을 수행해야 하므로 이를 달성하기 위해 루프를 사용할 수 있는지 궁금합니다.
미리 감사드립니다!
답변1
파일의 고유한 부분을 식별하고 분류하면 됩니다.
cat GC082_F4.*.R1.fastq.gz > GC082_F4_R1.fastq.gz
cat GC082_F4.*.R2.fastq.gz > GC082_F4_R2.fastq.gz
따라서 샘플이 여러 개인 경우 다음을 수행할 수 있습니다.
for sample in GC082_F4 GC083_F4 GC084_F4 GC085_F4 ... GC0NN_F4; do
cat "$sample".*.R1.fastq.gz > "$sample"_R1.fastq.gz
cat "$sample".*.R2.fastq.gz > "$sample"_R2.fastq.gz
done
예시 이름 목록을 입력으로 제공할 수도 있습니다.
while read sample; do
cat "$sample".*.R1.fastq.gz > "$sample"_R1.fastq.gz
cat "$sample".*.R2.fastq.gz > "$sample"_R2.fastq.gz
done < sample.names.txt