我有一个巨大的文件,例如
chr1 1 G 300
chr1 2 A 500
chr1 3 C 200
chr4 1 T 35
chr4 2 G 400
chr4 3 C 435
chr3 1 G 300
chr3 2 A 500
chr3 3 C 200
chr3 1 T 35
chr3 2 G 400
chr6 3 C 435
chr6 4 A 223
chr6 5 T 400
chr6 6 G 300
我通过对第一列值进行分组来将文件拆分为多个文件,例如
文件1.txt
chr1 1 G 300
chr1 2 A 500
chr1 3 C 200
文件3.txt
chr3 1 G 300
chr3 2 A 500
chr3 3 C 200
chr3 1 T 35
chr3 2 G 400
答案1
Awk
解决方案:
awk '{ print > ("file" substr($1, 4) ".txt") }' file
substr($1, 4)
$1
-从位置开始的第一个字段值中提取子字符串4
查看结果:
$ head file[0-9]*.txt
==> file1.txt <==
chr1 1 G 300
chr1 2 A 500
chr1 3 C 200
==> file3.txt <==
chr3 1 G 300
chr3 2 A 500
chr3 3 C 200
chr3 1 T 35
chr3 2 G 400
==> file4.txt <==
chr4 1 T 35
chr4 2 G 400
chr4 3 C 435
==> file6.txt <==
chr6 3 C 435
chr6 4 A 223
chr6 5 T 400
chr6 6 G 300