根据文件中解析的参数值将文件内容拆分为其他文件

根据文件中解析的参数值将文件内容拆分为其他文件

常规文件包含按列组织的数据,并以空格分隔。根据第二个字段的值,我想将该初始数据文件拆分为几个其他文件。

该数据文件有 54,242 行和 399 列。数据结构是这样的:

SNP Chr Pos ID_01 ID_02 ...
rs01 1 200 AA BB ...
rs02 25 10 BA AA ...
rs03 1 30 AA BB ...
rs04 X 90 BB AA ...

我的输出应包含与第 2 列中的file"${chr}"不同$chr值一样多的每条记录(或行)。例如:

文件11将包含第二个字段为:的所有记录

SNP Chr Pos ID_01 ID_02 ...
rs01 1 200 AA BB ...
rs03 1 30 AA BB ...

文件2525将包含第二个字段为:的所有记录

SNP Chr Pos ID_01 ID_02 ...
rs02 25 10 BA AA ...

等等...

答案1

awk

awk 'FNR==1 { hdr = $0; next }                     
    {
        if(!f[$2]) { print hdr >"file" $2; f[$2] = 1 }
        print >>"file" $2
    }' data.txt

相关内容