我有两个文件夹,每个文件夹包含 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 中的第一个文件,依此类推。我想保留文件 2 中第一列与文件一的第一列匹配的那些行。如果它是单个文件,我会很容易使用
awk 'FNR==NR {a[$1]; next}; $1 in a' file1 file2 > file_match
但我有500个文件,所以我需要通过循环来运行它。我不知道如何循环2个文件!有什么建议吗?谢谢
答案1
将每个文件夹的文件存储在数组中:
f1=( /path/to/folder1/* )
f2=( /path/to/folder2/* )
然后迭代数组的数字索引
for idx in "${!f1[@]}"; do
awk ... "${f1[$idx]}" "${f2[$idx]}" > "${f1[$idx]}.matched"
done