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

Ama*_*nga 4 awk text-processing bioinformatics

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

数据文件有 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 ...
Run Code Online (Sandbox Code Playgroud)

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

file1将包含其第二个字段为的所有记录1

SNP Chr Pos ID_01 ID_02 ...
rs01 1 200 AA BB ...
rs03 1 30 AA BB ...
Run Code Online (Sandbox Code Playgroud)

file25将包含其第二个字段为的所有记录25

SNP Chr Pos ID_01 ID_02 ...
rs02 25 10 BA AA ...
Run Code Online (Sandbox Code Playgroud)

等等...

Sat*_*ura 5

awk

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

  • @Cbhihe 最初的问题没有提到一些只有一列的记录。只有您的编辑声称,这似乎与 OP 的意图相反。 (2认同)