我有一个xml文件,如下所示,我需要使用unix命令"en“。
<void method="put">
<string>LANGUAGE</string>
<string>en</string>
</void> 使用下面的命令(从google的某个链接获得),
sed -n '/string/{s/.*<string>//;s/<\/string.*//;p;}' Locale.xml我得到了输出
LANGUAGE
en所以我用
sed -n '/string/{s/.*<string>//;s/<\/string.*//;p;}' Locale.xml | tail -1但是,在sed中是否有任何只能获得第二个值的选项?
发布于 2014-04-28 13:03:08
你可以用这个sed,
sed -n '/LANGUAGE/{N; s/.*<string>\(.*\)<\/string>.*/\1/p; }' Locale.xml发布于 2014-04-28 12:54:11
使用xmlstarlet。
$ cat x.xml
<?xml version="1.0"?>
<void method="put">
<string>LANGUAGE</string>
<string>en</string>
</void>
$ xmlstarlet sel -t -c '/void/string[2]/text()' x.xml
en或者使用xmllint。
$ xmllint --xpath '/void/string[2]/text()' x.xml
en发布于 2014-04-28 12:44:36
您可以搜索LANGUAGE和下一行的打印:
awk -F"[<>]" '/LANGUAGE/ {getline;print $3}' Locale.xml
en或者搜索string并打印最后一个:
awk -F"[<>]" '/string/ {f=$3} END {print f}' Locale.xml
enhttps://stackoverflow.com/questions/23341361
复制相似问题