我有一个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号。例如,请求约翰会排名第一。
解析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,John已修复。
> ./abovescript John
1
> ./abovescript Zack
2
> ./abovescript Bob
3