【问题标题】:Creating Bash Script to retrieve data from XML file创建 Bash 脚本以从 XML 文件中检索数据
【发布时间】:2014-02-01 07:46:13
【问题描述】:

我有一个这样的 XML 文件:

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<List>
    <Job id="1" name="John/>
    <Job id="2" name="Zack"/>
    <Job id="3" name="Bob"/>
</List>

我想创建一个 bash 脚本,它从特定名称中提取 id 号。例如,请求 John 将输出 1。我有什么办法可以做到这一点?

【问题讨论】:

    标签: xml linux bash


    【解决方案1】:

    解析 XML 文件时,请使用理解 xml 的工具。你可以使用xmlstarlet:

    例如说:

    xmlstarlet sel -t -v "/List/Job[@name=\"John\"]/@id" file.xml
    

    会产生

    1
    

    顺便说一句,您的输入格式不正确。您在

    中缺少报价
    <Job id="1" name="John/>
    

    应该是

    <Job id="1" name="John"/>
    

    【讨论】:

      【解决方案2】:

      试试类似的东西

      #!/bin/bash
      
      name="$1"
      while read -r line; do
        [[ $line =~ "name=\"$name\"" ]] && [[ $line =~ "Job id=\""([^\"]+) ]] &&  echo "${BASH_REMATCH[1]}"
      done < file 
      

      例如如果file 是您的 xml 并且 John 是固定的。

      > ./abovescript John
      1
      > ./abovescript Zack
      2
      > ./abovescript Bob
      3
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2019-11-17
        • 2021-08-29
        • 2013-07-25
        • 1970-01-01
        • 1970-01-01
        • 2018-02-23
        • 1970-01-01
        • 2012-04-18
        相关资源
        最近更新 更多