Bash 스크립트를 사용하여 두 파일을 반복하는 방법

Bash 스크립트를 사용하여 두 파일을 반복하는 방법

각각 500개의 파일이 포함된 두 개의 폴더(폴더 1)가 있습니다.

HI.2622.001.Index_19.ED18_ND1W27-2_288_R1.fastq.gz_matches_default_numberalignment_per_read
HI.2622.001.Index_19.ED18_ND1W27-2_288_R2.fastq.gz_matches_default_numberalignment_per_read
HI.2622.001.Index_19.ED18_ND1W27-2_288_R3.fastq.gz_matches_default_numberalignment_per_read

그리고 다른 폴더(폴더 2)

HI.2622.001.Index_19.ED18_ND1W27-2_288_R1.fastq.gz_matches_default_filtered
HI.2622.001.Index_19.ED18_ND1W27-2_288_R2.fastq.gz_matches_default_filtered
HI.2622.001.Index_19.ED18_ND1W27-2_288_R3.fastq.gz_matches_default_filtered

폴더 1의 첫 번째 파일은 폴더 2의 첫 번째 파일에 해당하는 식입니다. 첫 번째 열이 파일 1의 첫 번째 열과 일치하는 파일 2의 행을 유지하고 싶습니다. 단일 파일이라면 사용하기 쉬울 것입니다.

awk 'FNR==NR {a[$1]; next}; $1 in a' file1 file2 > file_match 

하지만 500개의 파일이 있으므로 루프를 통해 실행해야 합니다. 두 파일을 반복하는 방법을 모르겠습니다! 어떤 제안이 있으십니까? 감사해요

답변1

각 폴더의 파일을 배열로 저장합니다.

f1=( /path/to/folder1/* )
f2=( /path/to/folder2/* )

그런 다음 배열의 숫자 인덱스를 반복합니다.

for idx in "${!f1[@]}"; do
    awk ... "${f1[$idx]}" "${f2[$idx]}" > "${f1[$idx]}.matched"
done

관련 정보