我有 384 对文件,它们的名称只有一个字符不同。这些代表来自测序仪泳道 1 和泳道 2 的 fastq 文件。在分析这些之前,我需要连接每一对。
AA01_S1_L001_R1_001.fastq.gz
并AA01_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}
.