首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何将两个gz文件合并为具有特定名称的新输出文件

如何将两个gz文件合并为具有特定名称的新输出文件
EN

Unix & Linux用户
提问于 2018-04-25 15:01:27
回答 1查看 1.8K关注 0票数 0

我从24个样本中读取了96个*fastqc.gz原始文件。每对样品分别在两根羊皮上进行测序。

我希望将来自两个车道的每一对读取合并为一个输出文件,其中包含来自示例文件名(2271_merged_R1_001.fastq.gz)的同名标识符。

代码语言:javascript
运行
复制
File names are in this order:
22[71-94]*R[1-2]_001.fastq.gz;

**2271**_ID890_1_S1_L001_**R1_001.fastq.gz**
**2271**_ID890_1_S1_L002_**R1_001.fastq.gz**

**2271**_ID890_1_S1_L001_**R2_001.fastq.gz**
**2271**_ID890_1_S1_L002_**R2_001.fastq.gz**

我尝试了下面的简短脚本,但是只生成了两个输出文件(第一个和最后一个)。

对于R1文件

代码语言:javascript
运行
复制
  for rf in 22[71-94]*R1_001.fastq.gz; do zcat $rf > 22"${71-94}"_merged_R1_001.fastq.gz ; done

对于R2文件

代码语言:javascript
运行
复制
for rf in 22[71-94]*R2_001.fastq.gz; do zcat $rf > 22"${71-94}"_merged_R2_001.fastq.gz ; done

我的问题是: 1.为什么只生成两个输出文件? 2.输出文件中的读取数不是来自两个通道的合并文件的总和。3.有一个好的方法吗?我可以一步合并两条车道的读取(R1和R2),而不是对每种读取类型运行两次。

密码出了什么问题?如何验证输出文件是否已完全合并?

谢谢

EN

回答 1

Unix & Linux用户

发布于 2018-04-25 16:02:09

首先,22[71-94]*R1_001.fastq.gz没有扩展到您认为它扩展到的

这是有效的22[1-9]*R1_001.fastq.gz -在这个,是一个字符分组,其中"7或1至9或4“简化为"1至9”。

22{71..94}*R1_001.fastq.gz很可能是您所寻找的扩展,但是您的循环将对找到的每个文件执行一次zcat,而不是将所有内容连接在一起。实际上,每个R1文件都会顺序地将zcat-ed放入同一个外部文件中,从而覆盖前面的写操作。

我相信这就是你所要寻找的假设(见下文):

代码语言:javascript
运行
复制
for num in {71..94}; do zcat 22"$num"*R1_{L001,L002}.fastq.gz > "22${num}_merged_R1_001.fastq" ; done

假设:您希望解压缩结果,因此我从结果文件中删除了.gz (如Patrick指出的那样),如果不是这样的话,只需将zcat更改为cat并将.gz追加到结果文件。

票数 0
EN
页面原文内容由Unix & Linux提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://unix.stackexchange.com/questions/440009

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档