小编Elm*_*mer的帖子

根据单列(AWK)中的值拆分大文件

我想根据第6列中的值(大约10*10 ^ 3个唯一值)拆分一个大文件(10 ^ 6行).但是,由于记录的数量,我无法使其正常工作.它应该很容易,但它已经花了好几个小时,我没有进一步.

我尝试了两种选择:
选项1

awk '{print > $6".txt"}' input.file
awk: cannot open "Parent=mRNA:Solyc06g051570.2.1.txt" for output (Too many open files)
Run Code Online (Sandbox Code Playgroud)

选项2

awk '{print > $6; close($6)}' input.file 
Run Code Online (Sandbox Code Playgroud)

这不会导致错误,但它创建的文件只包含对应于'grouping'值$ 6的最后一行

这是我的文件的开头,但是,这个文件不会导致错误,因为它太小了:

exon    3688    4407    +   ID=exon:Solyc06g005000.2.1.1    Parent=mRNA:Solyc06g005000.2.1
exon    4853    5604    +   ID=exon:Solyc06g005000.2.1.2    Parent=mRNA:Solyc06g005000.2.1
exon    7663    7998    +   ID=exon:Solyc06g005000.2.1.3    Parent=mRNA:Solyc06g005000.2.1
exon    9148    9408    +   ID=exon:Solyc06g005010.1.1.1    Parent=mRNA:Solyc06g005010.1.1
exon    13310   13330   +   ID=exon:Solyc06g005020.1.1.1    Parent=mRNA:Solyc06g005020.1.1
exon    13449   13532   +   ID=exon:Solyc06g005020.1.1.2    Parent=mRNA:Solyc06g005020.1.1
exon    13711   13783   +   ID=exon:Solyc06g005020.1.1.3    Parent=mRNA:Solyc06g005020.1.1
exon    14172   14236   +   ID=exon:Solyc06g005020.1.1.4    Parent=mRNA:Solyc06g005020.1.1 …
Run Code Online (Sandbox Code Playgroud)

awk genetic split large-data

20
推荐指数
1
解决办法
1万
查看次数

AWK:如果文件1中的列落在其他文件中的两列中声明的范围内,则提取行

目前我正在努力应对我尚未能解决的AWK问题.我有一个巨大的文件(30GB),基因组数据包含一个包含位置的列表(在第1列和第2列中声明)和第二个包含多个范围的列表(在第3列,第4列和第5列中声明).我想提取第一个文件中位置落在秒文件中声明的范围内的所有行.由于位置仅在某个染色体(chr)内是唯一的,因此如果chr是相同的(即文件1中的col1与file2中的col3匹配),则必须进行测试.

档案1

chromosome position another....hundred.....columns
chr1       816 .....
chr1       991 .....
chr2       816 .....
chr2       880 .....
chr2       18768 .....
...
chr22      9736286 .....
Run Code Online (Sandbox Code Playgroud)

档案2

name    identifier chromosome   start    end
GENE1   ucsc.86    chr1         800      900
GENE2   ucsc.45    chr2         700      1700
GENE3   ucsc.46    chr2         18000    19000
Run Code Online (Sandbox Code Playgroud)

预期产出

chromosome position another....hundred.....columns
chr1       816 .....
chr2       816 .....
chr2       880 .....
chr2       18768 .....
Run Code Online (Sandbox Code Playgroud)

我想打算做的总结(半编码):

(if $1(in file 1) matches $3(in file 2){            ##test if in the correct chr
   if ($2(in file 1) …
Run Code Online (Sandbox Code Playgroud)

awk bioinformatics multidimensional-array genome

0
推荐指数
1
解决办法
1243
查看次数