由于我在其他地方找不到解释的例子,所以我把我的发现作为问答分享。
考虑一下这份学生名单(pupils.xml):
<pupils>
<pupil>
<firstName>Adam</firstName>
<lastName>Amith</lastName>
<birthDate>2000-01-01</birthDate>
</pupil>
<pupil>
<firstName>Berta</firstName>
<lastName>Bmith</lastName>
<birthDate>2000-01-02</birthDate>
</pupil>
<pupil>
<firstName>Caesar</firstName>
<lastName>Cmith</lastName>
<birthDate>2000-01-03</birthDate>
</pupil>
<pupil>
<firstName>Doris</firstName>
<lastName>Dmith</lastName>
<birthDate>2000-01-04</birthDate>
</pupil>
</pupils>如何选择每个学生的两个子属性来获得如下列表:
Adam Amith
Berta Bmith
Caesar Cmith
Doris Dmith发布于 2020-05-20 11:27:54
获取此命令的命令是
xmlstarlet select -T -t -m "//pupil" -v "firstName" -o " " -v "lastName" -n pupils.xml并带来:
Adam Amith
Berta Bmith
Caesar Cmith
Doris Dmith-T将输出切换到text-t -m "//pupil" -v "firstName" -o " " -v "lastName" -n定义了一个模板-m "//pupil"匹配每个pupil节点-v "firstName"打印firstName子节点(当前匹配节点的子节点)的值。-o " "打印空白-v "lastName" (见上文)-n打印换行符
pupils.xml提供输入文件文献资料提供了更高级的参数。
发布于 2020-05-20 16:44:51
您还可以在这里使用concat():
xmlstarlet sel -T -t -m //pupil -v "concat(.//firstName ,' ',.//lastName)" -n pupils.xml以同样的输出。
https://stackoverflow.com/questions/61911918
复制相似问题