首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何根据第一列拆分vcf.gz文件,将头保存在每个子集中并保存回vcf.gz文件

如何根据第一列拆分vcf.gz文件,将头保存在每个子集中并保存回vcf.gz文件
EN

Stack Overflow用户
提问于 2022-05-10 17:23:06
回答 1查看 130关注 0票数 1

我有一个大的vcf.gz文件(40 be ),为了能够加载到R中并在每个子集上运行一个脚本,我必须拆分它。我想把它分成第一列

代码语言:javascript
复制
zcat large_data.vcf.gz | cut -f1,2-5,8- | awk '{ print | ("gzip -c > " $1".vcf.gz") }'

但是我希望将头保存在每个子集中。标题不会保存到分裂的数据中(我认为它会这样做)。这可能是因为标题以#开头。

代码语言:javascript
复制
#col1  col2  col3  col4  col5  col6  col7  col8

我试过了

代码语言:javascript
复制
zcat large_data1.vcf.gz | cut -f1,2-5,8- | 
    awk 'NR == 1{header = $0; next} 
    !($1 in filename){ print header | (“gzip -c > “ $1 ".vcf.gz") } 
    NR > 1 { print $0 | (“gzip -c > “ $1 ".vcf.gz"); filename[$1] }' file

但有些地方出了问题..。

有什么想法吗?

PS:--过滤器不是公认的选项。

编辑:数据的一个示例

代码语言:javascript
复制
#col1  col2  col3  col4  col5  col6  col7  col8
1  100  100  100  1000  110  100  110
1  110  100  110  500  200  150  160
2  140  120  100  1000  110  160  210
2  110  180  170  700  220  150  120

所需数据1-

代码语言:javascript
复制
#col1  col2  col3  col4  col5  col6  col7  col8
1  100  100  100  1000  110  100  110
1  110  100  110  500  200  150  160

和2-

代码语言:javascript
复制
#col1  col2  col3  col4  col5  col6  col7  col8
2  140  120  100  1000  110  160  210
2  110  180  170  700  220  150  120
EN

回答 1

Stack Overflow用户

发布于 2022-05-10 18:43:25

我刚刚使它与这段代码一起工作,但是它在每一行的顶部添加了标题。

代码语言:javascript
复制
zcat large_data.vcf.gz | 
cut -f1,2-5,8- | 
awk 'NR == 1{header = $0; next} 
!($1 in filename){ print header | "gzip > " $1 ".vcf.gz" } 
NR > 1 { print $0 | "gzip > " $1 ".vcf.gz" }'
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/72190627

复制
相关文章

相似问题

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