Bash:从复杂的XML文件中检索字段
我尝试使用sed、egrep、awk等shell命令从结构复杂的XML文件中检索一些字段,但失败了 以下是my file.xml文件的结构(使用不同的值重复多次):Bash:从复杂的XML文件中检索字段,xml,bash,shell,Xml,Bash,Shell,我尝试使用sed、egrep、awk等shell命令从结构复杂的XML文件中检索一些字段,但失败了 以下是my file.xml文件的结构(使用不同的值重复多次): 星期一 星期二 星期三 星期四 星期五 星期六 星期日 我想要得到输出:Name;霍斯蒂德;FolderName;主机1;旅社2 有什么想法吗 谢谢。如果我们假设您的意思不是(无效)字符串,而是(有效)字符串,当然也假设这两个基准都是有效文档的一部分,这可能类似于: xmlstarlet sel -t -m '//Task' \
星期一
星期二
星期三
星期四
星期五
星期六
星期日
我想要得到输出:Name;霍斯蒂德;FolderName;主机1;旅社2
有什么想法吗
谢谢。如果我们假设您的意思不是(无效)字符串
,而是(有效)字符串
,当然也假设这两个基准都是有效文档的一部分,这可能类似于:
xmlstarlet sel -t -m '//Task' \
-v ./@Name -o ';' \
-v ./Source/@HostID -o ';' \
-v ./Destination/@Filename -o ';' \
-v '//MyID[@id=./Destination/HostID]/@Host1' -o ';' \
-v '//FID[@id=./Source/HostID]/@Host2' -n \
<in.xml >out.txt
xmlstarlet sel-t-m'//任务'\
-v./@Name-o';'\
-v./Source/@HostID-o';'\
-v./Destination/@Filename-o';'\
-v'//MyID[@id=。/Destination/HostID]/@Host1'-o';'\
-v'//FID[@id=。/Source/HostID]/@Host2'-n\
顺序文件
使用XML/HTML解析器(xmllint、xmlstarlet…)显示有效的XML文件。请将您想要的输出添加到您的问题中。@Cyrus谢谢,请看editAn XML文件实际上是无效的,除非它有根元素。这里没有显示根元素,也没有显示任务
如何与MyID
或FID
元素(您打算从中检索其他内容)连接的任何联合父元素。除非源文件不是真正的XML(并且本身无法解析),否则需要确保此处显示的示例有效。此外,`无效--每个属性都需要有自己的名称,与包含它的元素不同。
xmlstarlet sel -t -m '//Task' \
-v ./@Name -o ';' \
-v ./Source/@HostID -o ';' \
-v ./Destination/@Filename -o ';' \
-v '//MyID[@id=./Destination/HostID]/@Host1' -o ';' \
-v '//FID[@id=./Source/HostID]/@Host2' -n \
<in.xml >out.txt