我想根据第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问题.我有一个巨大的文件(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)