我有CSV文件,可能是这样的:
name1;1;11880
name2;1;260.483
name3;1;3355.82
name4;1;4179.48
name1;2;10740.4
name2;2;1868.69
name3;2;341.375
name4;2;4783.9
可能有多行或少行,我需要将其拆分为多个.dat文件,每个文件都包含与此文件第二列值相同的行。(然后我将为每个.dat文件制作条形图)对于这种情况,应该是两个文件:
data1.dat
name1;1;11880
name2;1;260.483
name3;1;3355.82
name4;1;4179.48
data2.dat
name1;2;10740.4
name2;2;1868.69
name3;2;341.375
name4;2;4783.9
用bash有什么简单的方法吗?
最佳答案
可以使用awk生成只包含第二列的特定值的文件:
awk -F ';' '($2==1){print}' data.dat > data1.dat
只需更改
$2==
条件下的值。或者,如果要自动执行此操作,请使用:
awk -F ';' '{print > ("data"$2".dat")}' data.dat
它将输出到包含名称中第二列的值的文件。