创建Bash脚本以从XML文件中检索数据

时间:2014-02-01 07:46:13

标签: xml linux bash

我有一个像这样的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号。例如,请求约翰出去1.我有什么方法可以做到这一点吗?

2 个答案:

答案 0 :(得分:4)

解析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"/>

答案 1 :(得分:1)

尝试类似

的内容
#!/bin/bash

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

e.g。如果file是你的xml而John是固定的。

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