ファイルをリンクし、異なるファイルの一致に基づいて出力に異なる名前を付けるにはどうすればよいですか?

ファイルをリンクし、異なるファイルの一致に基づいて出力に異なる名前を付けるにはどうすればよいですか?

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.txt2つの列を持つ区切りファイルがありますID and Sample。一致するサンプルのIDをfastqsに関連付けて、出力サンプル名を指定したいと思います。

    ID        Sample
SRR13456784 GJK1234567
SRR13456785 GJK1234567
SRR13456786 GJK1234567
SRR19876543 GJK2444103
SRR19876544 GJK2444103

私がリンクしたファイルの1つは次のとおりです。

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まで繰り返し、関連ファイルをリンクする2番目のループを実行します。サンプル入力で実行するコマンドは次のとおりです。

$ 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

おすすめ記事