总的来说,我对 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 个样本执行此操作,我想知道是否可以使用一个循环来实现此目的?
先感谢您!
答案1
只需识别文件的独特部分并对其进行分类:
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