使用来自 bash 的数据创建 .xml 文件

使用来自 bash 的数据创建 .xml 文件

我正在尝试创建一个 .xml 文件,bash 命令需要复制此代码块,并从 city.txt 中替换 CITY-FROM-TEXT-FILE-LINE-1 属性(每行一个城市)

<ss:Row ss:Height ="22">
            <ss:Cell>
               <ss:Data ss:Type="String">xx</ss:Data>
            </ss:Cell>
            <ss:Cell>
               <ss:Data ss:Type="String">CITY-FROM-TEXT-FILE-LINE-1</ss:Data>
            </ss:Cell>
            <ss:Cell>
               <ss:Data ss:Type="String">CALIFORNIA</ss:Data>
            </ss:Cell>
            <ss:Cell>
               <ss:Data ss:Type="String">CA</ss:Data>
            </ss:Cell>
            <ss:Cell>
               <ss:Data ss:Type="String">xx</ss:Data>
            </ss:Cell>
            <ss:Cell>
               <ss:Data ss:Type="String">xx</ss:Data>
            </ss:Cell>
            <ss:Cell>
               <ss:Data ss:Type="String">xx</ss:Data>
            </ss:Cell>
            <ss:Cell>
               <ss:Data ss:Type="String">xx</ss:Data>
            </ss:Cell>
            <ss:Cell>
               <ss:Data ss:Type="String">xx</ss:Data>
            </ss:Cell>
            <ss:Cell>
               <ss:Data ss:Type="String">xx</ss:Data>
            </ss:Cell>
            <ss:Cell>
               <ss:Data ss:Type="String">xx</ss:Data>
            </ss:Cell>
            <ss:Cell>
               <ss:Data ss:Type="String">xx</ss:Data>
            </ss:Cell>
            <ss:Cell>
               <ss:Data ss:Type="String">xx</ss:Data>
            </ss:Cell>
            <ss:Cell>
               <ss:Data ss:Type="String">xx</ss:Data>
            </ss:Cell>
            <ss:Cell>
               <ss:Data ss:Type="String">xx</ss:Data>
            </ss:Cell>
            <ss:Cell>
               <ss:Data ss:Type="String">xx</ss:Data>
            </ss:Cell>
            <ss:Cell>
               <ss:Data ss:Type="String">xx</ss:Data>
            </ss:Cell>
            <ss:Cell>
               <ss:Data ss:Type="String">xx</ss:Data>
            </ss:Cell>
            <ss:Cell>
               <ss:Data ss:Type="String">xx</ss:Data>
            </ss:Cell>
            <ss:Cell>
               <ss:Data ss:Type="String">xx</ss:Data>
            </ss:Cell>
            <ss:Cell>
               <ss:Data ss:Type="String">xx</ss:Data>
            </ss:Cell>
            <ss:Cell>
               <ss:Data ss:Type="String">xx</ss:Data>
            </ss:Cell>
            <ss:Cell>
               <ss:Data ss:Type="String">xx</ss:Data>
            </ss:Cell>
            <ss:Cell>
               <ss:Data ss:Type="String">xx</ss:Data>
            </ss:Cell>
            <ss:Cell>
               <ss:Data ss:Type="String">xx</ss:Data>
            </ss:Cell>
        </ss:Row>

答案1

template.xml创建包含上述文本的文件

IFS=$(echo -en "\n\b") ; for C in `cat city.txt` ; do sed s/CITY-FROM-TEXT-FILE-LINE-1/$C/ template.xml ; done > cities.xml

使用的命令

  • cat; 将文件连接到 STDOUT
  • sed;流编辑器

我们还使用标准 bash 的循环机制,并重定向到文件。

为了进一步阅读,我建议;

答案2

确实没有足够的信息来确切地知道你想要什么,但我会尝试猜测,这可能会有所帮助。如果你有一个名为的文件,cities.txt其中包含:

xx
CITY-FROM-TEXT-FILE-LINE-1
CALIFORNIA
CA
xx

然后awk对该输入运行命令:

awk 'BEGIN{print "<ss:Row ss:Height =\"22\">"}{printf "  <ss:Cell>\n    <ss:Data ss:Type=\"String\">%s</ss:Data>\n  </ss:Cell>\n",$0}END{print "</ss:Row>"}' < cities.txt

那么你应该得到输出:

<ss:Row ss:Height ="22">
  <ss:Cell>
    <ss:Data ss:Type="String">xx</ss:Data>
  </ss:Cell>
  <ss:Cell>
    <ss:Data ss:Type="String">CITY-FROM-TEXT-FILE-LINE-1</ss:Data>
  </ss:Cell>
  <ss:Cell>
    <ss:Data ss:Type="String">CALIFORNIA</ss:Data>
  </ss:Cell>
  <ss:Cell>
    <ss:Data ss:Type="String">CA</ss:Data>
  </ss:Cell>
  <ss:Cell>
    <ss:Data ss:Type="String">xx</ss:Data>
  </ss:Cell>
</ss:Row>

这可能无法直接回答您的问题,但希望可以为您提供一种(多种)可行的方法来帮助自己入门。

相关内容