각각 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