我有一个像这样的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.我有什么方法可以做到这一点吗?
答案 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