それぞれ500個のファイルを含む2つのフォルダ(フォルダ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