我可以仅从命令行修改xml文件吗?

时间:2017-06-09 06:04:45

标签: bash ubuntu sed

有一个自动生成的xml文件。

<?xml version="1.0" encoding="UTF-8"?>
  <widget id="some ID" modes="max">
  <icon src="icon.png"/>
  <name>StackOverflow</name>
  <feature name="some feature"/>

我想实现以下目标:

  1. modes
  2. 删除"full"
  3. name
  4. 删除${name}
  5. 删除<feature>
  6. <content src="index.html"/><icon>
  7. 之间添加<name>

    可以这样做吗?

    [添加更多背景]

    这是一个主要由node.js组成的网站。此shell命令将在服务器端Javascript上运行,并将使用child_process.exec()执行。

1 个答案:

答案 0 :(得分:1)

由于awk也是标准的GNU工具,我认为它可能符合您的要求。 这是一个非常简单的脚本,你可以采用。

awk '
  /modes/{gsub(/modes=".*"/,"modes=\"full\"") }
  /<icon/{$0=$0"\n  <content src=\"index.html\"/>"}
  /<name>/{gsub(/>.*</,">$name<")}
  !/feature/{print}
' Your_XML_file

输出:

<?xml version="1.0" encoding="UTF-8"?>
  <widget id="some ID" modes="full">
  <icon src="icon.png"/>
  <content src="index.html"/>
  <name>$name</name>

这是我要给出的简短解释,

  1. 在xml文件中查找模式,并根据需要进行修改
  2. 找到“&lt; icon”,并在其下方插入。
  3. 删除行包含功能