2016-09-26 5 views
-1

パイプラインをさらに処理する前に、連結したい複数のファイルを扱っています。通常、連結する必要があるファイルのペアは1から3種類ありますが、場合によっては3つ以上のペアがあります。条件付きでスクリプトを微調整したいのですが、絶対数を使用する代わりに、条件付き(1または1以上のファイル)を渡して連結します。私が正しく質問を理解していれば、簡単なforループが動作するはず複数のファイルを連結するためのbashの条件付き

if [ $no_lanes -eq "1" ]; then 
     fq_align_1=$lane1_pair1 
     fq_align_2=$lane1_pair2 
fi 

if [ $no_lanes -eq "2" ]; then 
     cat $lane1_pair1 $lane2_pair1 > "$sampleID"_cat1.fq 
     cat $lane1_pair2 $lane2_pair2 > "$sampleID"_cat2.fq 
     fq_align_1="$sampleID"_cat1.fq 
     fq_align_2="$sampleID"_cat2.fq 
fi 

if [ $no_lanes -eq "3" ]; then 
     cat $lane1_pair1 $lane2_pair1 $lane3_pair1 > "$sampleID"_cat1.fq 
     cat $lane1_pair2 $lane2_pair2 $lane3_pair3 > "$sampleID"_cat2.fq 
     fq_align_1="$sampleID"_cat1.fq 
     fq_align_2="$sampleID"_cat2.fq 
fi .... 
+0

[最小、完全、および検証可能な例](http://stackoverflow.com/help/mcve) – Inian

+0

サンプル入力と予想される出力は何ですか? – Inian

+0

私の入力は生のfastqデータ(DNA配列を保存するためのテキストベースのフォーマット)です。私は順方向のデータと逆方向のデータを含む1つのファイルを含む1つのファイルを持っています。時には、1つ以上のペア(F&R)があり、すべてのフォワードデータを連結し、データを一緒にリバースする必要があります。 –

答えて

0

:誰もが私にヒントを与えることができれば、私は思っていました。

cat "$lane1_pair1" > "$sampleID"_cat1.fq 
cat "$lane1_pair2" > "$sampleID"_cat2.fq 

for ((n=2; n<=no_lanes; n++)) { 
     pair1var=lane${n}_pair1 
     pair2var=lane${n}_pair2 
     cat "${!pair1var}" >> "$sampleID"_cat1.fq 
     cat "${!pair2var}" >> "$sampleID"_cat2.fq 
} 

fq_align_1="$sampleID"_cat1.fq 
fq_align_2="$sampleID"_cat2.fq 

編集:ループ内の可変インダイレクションを修正しました。何らかの理由で、私はループ内でファイル名を作り上げていると思っていました。しかし、実際には変数名を作成しています。それは$ {!...}展開を使用してわずかな間接を要求します。

+0

ありがとうございました。それはまさに私が探していたものです! –

+0

@Naeglaria、私は助けることができてうれしい。あなたの問題を解決したら、正式にこの回答を受け入れてください。 :) – ccarton

+0

私は十分なクレジットがないので、私はあなたの答えの投票をすることができません! "フィードバックをいただきありがとうございます!評判が15未満の人の投票が記録されますが、公開されている投稿のスコアは変更されません。 –

関連する問題