我有以下数据集:
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