【问题标题】:Edit XML from command line with shell script on Linux在 Linux 上使用 shell 脚本从命令行编辑 XML
【发布时间】:2013-07-09 16:29:42
【问题描述】:

我正在尝试制作一个更改一些值然后部署的脚本。我有这个 XML:

<application>
    <NVPairs name="Variables">
        <NameValuePair>
            <name>Parameter/1</name>
            <value>MyOtherValue</value>
        </NameValuePair>
        <NameValuePair>
            <name>Parameter/2</name>
            <value>MyValue</value>
        </NameValuePair>
    </NVPairs>
</application>

我正在尝试使用 SED 进行编辑。 NVPAIRS 和 NameValue 似乎让我有点困惑。我可以询问如何处理 NameValuePair 的建议吗?我也尝试过 XMLStarlet,但同样的问题。似乎无法处理 NameValuePairs。

【问题讨论】:

  • 我的水晶球今晚不工作了。你想做什么,为什么它不起作用?
  • LOL 抱歉,我正在尝试编辑 Parameter/2(这不是常量)和 Myvalue(这也不是常量)。
  • 它是 XML。使用处理 XML 的东西,而不是模式匹配。我可能会使用带有 XML::LibXML 的 Perl 单行器
  • 值可以改变。这个 NameValuePair 让我有点乱。
  • 另一个问题是我无法安装任何 XML 工具,如 XMLStarlet 等,因为它可以正常使用,没有 root 访问权限。所以我不得不使用手头的工具。

标签: xml linux command-line edit


【解决方案1】:

我不会尝试使用 sed 来编辑 XML。除非有一些常数可以匹配(让你决定你是在 /1 还是 /2),否则会很难(我会说不可能,但是一些 sed 大师会提示并证明我错了......)

如果你不能安装东西,比如 awk 或 perl 脚本,它们可以让你保持最低限度的状态,你比 sed 更好地工作。

【讨论】:

  • 我尝试 awk 使用我在这里找到的信息:stackoverflow.com/questions/8514985/… 但正如我所说的信息并不总是相同的。我尝试了 XPATH 方法,但这是奇怪的 XML(名称对),我必须第一次尝试使用脚本编辑它
  • Awk 可以更像脚本语言(变量等)那样使用,因此您可以根据状态保持状态并以不同方式处理行。您确实需要提供您希望处理的值类型的样本 - 在那之前我们都只是猜测!
  • 我提供的示例 XML 是我必须处理的那种值。没有常数。所以 SED/AWK 可能不起作用。 XML 是 JAVA EAR 文件的“配置”文件。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-11-24
  • 1970-01-01
  • 2015-03-30
  • 1970-01-01
相关资源
最近更新 更多