循环 384 个对并创建 384 个新的串联文件

循环 384 个对并创建 384 个新的串联文件

我有 384 对文件,它们的名称只有一个字符不同。这些代表来自测序仪泳道 1 和泳道 2 的 fastq 文件。在分析这些之前,我需要连接每一对。

AA01_S1_L001_R1_001.fastq.gzAA01_S1_L002_R1_001.fastq.gz一路通过DH12_S384_L002_R1_001.fastq.gz。我想将 L002 附加到 L001 并在同级目录中创建 384 个新文件以用于分析。

我尝试在 R 中执行此操作,但我使用的软件包已过时。我认为这在 Unix 中是微不足道的,但我对 Unix 的了解相当菜鸟。

编辑以解决问题:我认为这些只是没有索引的 gzip 文件。请参阅下面的输出。我认为我不需要任何类型的索引。最后,是的,对之间的唯一区别是 L001 与 L002,并且输出名称实际上应该具有 L001 的名称(将通过管道输出到同级目录)。

gzip -cd AA01_S1_L001_R1_001.fastq.gz | head
@D00572:249:HT7WJBCXX:1:1106:8558:1978 1:N:0:AAGACTCTT+AAGGTGTTT
CAGCACCCATGACCGTGCCATTGCTCTCCTTGTCAAAGACACGCAGGCCC
+
DDDDDIIIIIIHIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIHIIIII
@D00572:249:HT7WJBCXX:1:1106:12310:1984 1:N:0:AAGACTCTT+AAGGTGTTT
CCAAAGTCTCAGGACCAACAGGAATTTTGATTGGTGCACCAGAATCCAGT
+
DDDDDHIIIIIIIIIIIIIIIIHHIIIIIIIIIIIIIHIIIIIIIIIIIH
@D00572:249:HT7WJBCXX:1:1106:12936:1969 1:N:0:AAGACTCTT+AAGGTGTTT
NAAAGGACCTTGATCTCTTCCTCATATCTGTCTTCCTTCTGCGAGTACTT

答案1

压缩的文件gzip可以简单地连接在一起(同时仍然压缩),因此无需首先解压缩文件。当您解压缩压缩的串联文件时,您将获得串联的未压缩数据。至少对于 来说也是如此xz

对于连接,我们可以循环所有L001文件,创建相应对的文件名,并将这两个文件连接到新目录中的一个文件:

mkdir output_dir

for name in *_L001_R1_001.fastq.gz; do
    other="${name/_L001/_L002}"
    cat "$name" "$other" >output_dir/"$name"
done

此处,将用的值${name/_L001/_L002}替换第一次出现的字符串,创建相应的文件对。这个其他文件名存储在变量中。_L001_L002$name$other

将这两个文件连接起来,cat并将结果写入output_dir目录中的新文件中。原始文件保留在原处。

bash这假设有一个类似或的shellksh93可以理解${parameter/pattern/string}.

相关内容