需要算法从CSV文件创建自动代码

时间:2015-07-20 04:25:46

标签: shell awk sed grep gawk

我有" N" csv文件中的列表示硬件,传感器,统计(1,2,3 ...... N),如下所示。

CSV Data

每列都有唯一的xml代码,我需要根据上表内容生成该代码。

<Hardware A>
   <Sensors sen1> 
        <Stat1>Mean</Stat1>
        <Stat2>Avg</Stat2>
        <Stat3>Slope</Stat3>
   </Sensors sen1>
   <Sensors sen2> 
        <Stat1>Min</Stat1>
        <Stat2>Max</Stat2>
        <Stat3>Mean</Stat3>
   </Sensors sen2>
    ....
    ....
</Hardware A>

我需要根据表格生成类似于上面的代码。任何人都可以告诉算法使用SHELL SCRIPT实现这种结构

1 个答案:

答案 0 :(得分:2)

在awk中它是这样的(显然未经测试,因为你没有提供可测试的样本输入/输出):

BEGIN { FS=","; fmt="%s %s>\n" }
NR==1 {
    for (i=1;i<=NF;i++) {
        tagName[i] = $i
    }
    next
}
$1 != "" {
    if (prev != "") {
        printf "</"fmt, tagName[1], prev
    }
    printf "<"fmt, tagName[1], $1
    prev = $1
}
{
    printf "   <"fmt, tagName[2], $2
    for (i=3;i<=NF;i++) {
        printf "      <%s>%s</%s>\n", tagName[i], $i, tagName[i]
    }
    printf "   </"fmt, tagName[2], $2
}
END {
    if (prev != "") {
        printf "</"fmt, tagName[1], prev
    }
}