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