首页 > 解决方案 > 使用带有文本文件的 awk 命令创建 XML

问题描述

我有一个包含以下数据的文本文件,需要在 shell 脚本中使用 awk 命令将其转换为 xml。

Package1,class1
Package1,class2
Package2,Page1
Package2,Page2

该文本文件需要转换为如下格式所示的 xml。

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<Package xmlns="http://soap.sforce.com/2006/04/metadata">
    <types>
        <members>class1</members>
        <members>class2</members>
        <name>Package1</name>
    </types>
    <types>
        <members>Page1</members>
        <members>Page2</members>
        <name>Package2</name>
    </types>
<version>48.0</version>
</Package>

我是 shell 脚本的新手。请帮帮我....

标签: xmlawksalesforce

解决方案


这应该让你开始

$  awk -F, 'function wrap(t,v) {return "<"t">"v"</"t">"}
            function rec()     {return wrap("types", members ORS wrap("name",$1) ORS)}                
            p && p!=$1 {print rec(); members=""}     
                       {p=$1; members=members ORS wrap("member",$2)} 
            END        {print rec()}' file

<types>
<member>class1</member>
<member>class2</member>
<name>Package2</name>
</types>
<types>
<member>Page1</member>
<member>Page2</member>
<name>Package2</name>
</types>

建立记录,直到名称更改并打印。


推荐阅读