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

我有这样的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> 

我想创build一个bash脚本,它从一个特定的名字中提取id号码。 例如,请求约翰将出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"/> 

尝试类似

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

例如,如果file是你的XML和约翰是固定的。

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