data
다음과 같이 여러 개가 포함된 디렉토리가 있습니다 fastqs
.
SRR13456784_1.fastq
SRR13456784_2.fastq
SRR13456784_3.fastq
SRR13456785_1.fastq
SRR13456785_2.fastq
SRR13456785_3.fastq
SRR13456786_1.fastq
SRR13456786_2.fastq
SRR13456786_3.fastq
SRR19876543_1.fastq
SRR19876543_2.fastq
SRR19876543_3.fastq
SRR19876544_1.fastq
SRR19876544_2.fastq
SRR19876544_3.fastq
details.txt
두 개의 열이 있는 구분된 파일이 있습니다 ID and Sample
. 일치하는 샘플의 ID를 fastqs와 연결하고 출력 샘플 이름을 지정하고 싶습니다.
ID Sample
SRR13456784 GJK1234567
SRR13456785 GJK1234567
SRR13456786 GJK1234567
SRR19876543 GJK2444103
SRR19876544 GJK2444103
내가 연결한 파일 중 하나는 다음과 같습니다.
cat SRR13456784_1.fastq SRR13456785_1.fastq SRR13456786_1.fastq > GSK1234567_1.fastq
cat SRR13456784_2.fastq SRR13456785_2.fastq SRR13456786_2.fastq > GSK1234567_2.fastq
cat SRR13456784_3.fastq SRR13456785_3.fastq SRR13456786_3.fastq > GSK1234567_3.fastq
위의 txt 파일은 예시이지만 원본 파일에는 50개의 샘플과 일치하는 300개의 ID가 있습니다.
누구든지 이 연결을 수행하고 단일 스크립트로 출력에 대한 샘플 이름을 제공하는 방법을 말해 줄 수 있습니까? 감사해요.
답변1
다음을 수행할 수 있습니다.
$ tail -n +2 details.txt |
while read -r id sample; do
for i in {1..3}; do
cat < "${id}_${i}".fastq >> "${sample}_${i}".fastq
done
done
tail +2
제목을 건너 뛰어야 합니다 ( ID Sample
). 그런 다음 나머지 행을 반복하고 해당 변수에 ID와 샘플을 저장한 다음 숫자 1부터 3까지 반복하고 관련 파일을 연결하는 두 번째 루프를 수행합니다. 예제 입력에서 실행할 명령은 다음과 같습니다.
$ tail -n +2 details.txt | while read -r id sample; do for i in {1..3}; do echo "cat \"${id}_${i}\".fastq >> \"${sample}_${i}\".fastq"; done; done
cat "SRR13456784_1".fastq >> "GJK1234567_1".fastq
cat "SRR13456784_2".fastq >> "GJK1234567_2".fastq
cat "SRR13456784_3".fastq >> "GJK1234567_3".fastq
cat "SRR13456785_1".fastq >> "GJK1234567_1".fastq
cat "SRR13456785_2".fastq >> "GJK1234567_2".fastq
cat "SRR13456785_3".fastq >> "GJK1234567_3".fastq
cat "SRR13456786_1".fastq >> "GJK1234567_1".fastq
cat "SRR13456786_2".fastq >> "GJK1234567_2".fastq
cat "SRR13456786_3".fastq >> "GJK1234567_3".fastq
cat "SRR19876543_1".fastq >> "GJK2444103_1".fastq
cat "SRR19876543_2".fastq >> "GJK2444103_2".fastq
cat "SRR19876543_3".fastq >> "GJK2444103_3".fastq
cat "SRR19876544_1".fastq >> "GJK2444103_1".fastq
cat "SRR19876544_2".fastq >> "GJK2444103_2".fastq
cat "SRR19876544_3".fastq >> "GJK2444103_3".fastq