使用AWK拆分CSV文件,同时从另一个文件读取以命名输出文件

时间:2014-01-13 10:59:58

标签: shell csv awk

我有一个CSV文件如下:

group1, item1
group1, item2
group2, item3
group1, item4
.....

我已设法按组拆分此文件以分隔csv文件(group1.csv.dat,group2.csv.dat等)。每个文件都包含属于特定组的所有项目。

group1.csv.dat:

item1, true
item2, true
item4, true
.....

group2.csv.dat:

item3, true
.....

我使用了以下AWK:

awk -F, '{print $2",true" > $1".csv.dat"}' file1

现在,我有第二个文件(假设文件为2),如下所示:

group1, GRFS+NC, 4
group2, GRTU+NC, 6 
....

如何使用AWK读取此文件,以便将第一步中创建的文件命名为 GRFS4.csv.dat,GRTU6.csv.dat而不是group1.csv.dat,group2.csv.dat?优选地,我想将处理结合到第一步中。非常感谢......

2 个答案:

答案 0 :(得分:1)

awk -F, '{split($2,a,"+");print $2",true" > a[1]""$3".csv.dat"}' file2

答案 1 :(得分:0)

你需要这样的东西,未经测试:

awk '
NR==FNR{ name[$1] = $3 $6 ".csv.dat"; next }
{ print $2 ",true" > name[$1] }
' FS='[, +]' file2 FS=',' file1

只需计算file2中的字段,以确保$ 3和$ 6是正确的字段。添加一个调试for循环以打印它们以查看您是否不确定。