首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >基于床文件中的变量创建多个文件

基于床文件中的变量创建多个文件
EN

Stack Overflow用户
提问于 2022-12-01 08:44:15
回答 2查看 44关注 0票数 0

我想提取线条为每个染色体创建文件。我的源文件如下所示:

床档

我可以运行awk '{OFS="\t"} {split($1, a, "r")} a[2]==1 {print $0}' MISA.bed > chr_1.bed。这种方法需要很长的时间来手工完成。

我尝试过这样做,它确实创建了正确的文件列表,但它们都是空的。

for i in {1..22}; do awk '{OFS="\t"} $1=="chr${i}" {print $0}' MISA.bed > chr_${i}.bed; done

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2022-12-01 13:49:16

Bash变量和awk变量是分开的和不同的。对于bash循环,可以使用i开关将-v var="value"作为命名变量发送到awk。但是,在您的示例中,不需要这样做,因为输出文件名的第一部分是awk中的数据字段1 ($1)。

唯一需要知道的是,在awk内部的打印可以重定向到awk中的文件,也可以使用>作为shell (附加不需要>>)。

对于您的示例,不需要重置字段分隔符。

这个简单的awk过程将把输入文件(MISA.bed)的每一行放入与数据字段1 (chr1.bed、chr2.bed等)中的值预先固定的匹配输出.bed文件。

代码语言:javascript
复制
awk '{print $0 > $1".bed"}' MISA.bed

大多数现代版本的awk都应该处理这个问题。有些版本可能要求连接文件名预先形成(fn=$1".bed"; print $0 > fn).

由于您的文件包含染色体数据,您将处理20-一些输出文件,不应造成任何问题(它们一直打开直到awk完成)。如果遇到与“文件太多”相关的错误,可以将最后的close(fn)语句添加到awk块中(这几乎肯定不需要)。

测试

测试文件MISA.bed

代码语言:javascript
复制
chr1    10286   10321   6   AACCCC
chr1    10386   10421   2   CT
chr1    10486   10521   2   TC
chr2    10186   10221   2   TC
chr2    10286   10321   2   AT
chr2    10486   10521   6   CCAACC
chr3    10486   10521   2   TC
chr3    10586   10621   2   AT
chr3    10686   10721   6   CCAACC

命令:

代码语言:javascript
复制
awk '{print $0 > $1".bed"}' MISA.bed

档案检查:

代码语言:javascript
复制
> ls *.bed
> chr1.bed  chr2.bed  chr3.bed  MISA.bed

> cat chr1.bed 
chr1    10286   10321   6   AACCCC
chr1    10386   10421   2   CT
chr1    10486   10521   2   TC

> cat chr2.bed 
chr2    10186   10221   2   TC
chr2    10286   10321   2   AT
chr2    10486   10521   6   CCAACC

> cat chr3.bed 
chr3    10486   10521   2   TC
chr3    10586   10621   2   AT
chr3    10686   10721   6   CCAACC

使用GNU Awk 5.1.0,API: 3.0在raspberry pi 400上进行测试。

票数 1
EN

Stack Overflow用户

发布于 2022-12-01 11:09:58

不如:

代码语言:javascript
复制
awk -F '\t' '{F=sprintf("chr_%s.bed",$1); print >> F}' MISA.bed 
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/74639082

复制
相关文章

相似问题

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