Cat
For循環用兩個變數連接文件
總的來說,我對 Linux 比較陌生,希望有人能幫助我。
我想合併來自 4 個不同測序通道的 fastq.gz 文件。每個文件具有以下名稱:
GC082_F4.lane1.1901.R1.fastq.gz
帶有GC082_F4
樣品名稱,laneX
指泳道(1 到 4)並R1
指正向或反向讀取(“R1”為反向,“R2”為正向)。我想為每個樣本連接來自 4 個不同通道的文件,這分別用於正向讀取 (R1) 和反向讀取 (R2)。所以對於這個特定的樣本,這將是:
對於前鋒閱讀:
cat GC082_F4.lane1.1901.R1.fastq.gz \ GC082_F4.lane2.1901.R1.fastq.gz GC082_F4.lane3.1901.R1.fastq.gz \ GC082_F4.lane4.1901.R1.fastq.gz > GC082_F4.R1.fastq.gz
反向讀取:
cat GC082_F4.lane1.1901.R2.fastq.gz \ GC082_F4.lane2.1901.R2.fastq.gz GC082_F4.lane3.1901.R2.fastq.gz \ GC082_F4.lane4.1901.R2.fastq.gz > GC082_F4.R2.fastq.gz
但由於我必須為 +100 個樣本執行此操作,我想知道是否可以為此使用一個循環?
先感謝您!
只需辨識文件的獨特部分並將其分類:
cat GC082_F4.*.R1.fastq.gz > GC082_F4_R1.fastq.gz cat GC082_F4.*.R2.fastq.gz > GC082_F4_R2.fastq.gz
因此,如果您有多個樣本,您可以執行以下操作:
for sample in GC082_F4 GC083_F4 GC084_F4 GC085_F4 ... GC0NN_F4; do cat "$sample".*.R1.fastq.gz > "$sample"_R1.fastq.gz cat "$sample".*.R2.fastq.gz > "$sample"_R2.fastq.gz done
您還可以提供樣本名稱列表作為輸入:
while read sample; do cat "$sample".*.R1.fastq.gz > "$sample"_R1.fastq.gz cat "$sample".*.R2.fastq.gz > "$sample"_R2.fastq.gz done < sample.names.txt