在数据文件中创建一个数组,同时特定列中的值保持不变

在数据文件中创建一个数组,同时特定列中的值保持不变

我有以下数据集:

M1  1   1233
M2  1   3212
M3  1   55323
M4  1   4444233
M5  1   23444
M6  1   555333
M7  1   55567
M8  2   22224
M9  2   55566
M10 2   4567
M11 3   44242
M12 3   234234
M13 4   2233
M14 4   2442
M15 4   322352
M16 4   235242
M17 4   2324524
M18 5   232342
M19 6   2322523
M20 6   2332523

我想根据第二列的值创建一个数组。我想在第二列只有 1 的所有行中应用其他命令,然后是第二列有 2 的行,依此类推,并将其保存在不同文件中,但我不知道该怎么做。我尝试使用 while 命令,但所有尝试都失败了。

此代码的输出应是数组每个索引中原始文件的子集,例如:

索引 i1:

M1  1   1233
M2  1   3212
M3  1   55323
M4  1   4444233
M5  1   23444
M6  1   555333
M7  1   55567

索引 i2:

M8  2   22224
M9  2   55566
M10 2   4567

等等直到

索引 i6:

M19 6   2322523
M20 6   2332523

你能帮助我吗?提前谢谢。

答案1

如果我正确理解了要求,那么大致如下的方法就可以了:

data="M1  1   1233
M2  1   3212
M3  1   55323
M4  1   4444233
M5  1   23444
M6  1   555333
M7  1   55567
M8  2   22224
M9  2   55566
M10 2   4567
M11 3   44242
M12 3   234234
M13 4   2233
M14 4   2442
M15 4   322352
M16 4   235242
M17 4   2324524
M18 5   232342
M19 6   2322523
M20 6   2332523
"
echo "$data" | while read ln; do
    set -- $ln
    echo $ln >> i$2
done

相关内容