我正在尝试使用 xmllint 从配置文件中解析 Solr 核心的名称。这有效:
xmllint --xpath /solr/cores/core/@name solr.xml |grep -Po '(?<=name=")[a-z-]+(?=")'
它返回类似:
core-a
core-b
...
Run Code Online (Sandbox Code Playgroud)
这正是我想要的,但我想消除 grep。似乎只用 xpath 就可以做到这一点。如果没有 grep,输出将如下所示:
name="core-a" name="core-b" ...
Run Code Online (Sandbox Code Playgroud)
将表达式包装起来string()
将多个输出减少到仅第一个(即core-a
仅此而已),这是没有用的。如何string
对每个结果应用该函数?
AFAIK,xmllint
相当有限。但您可以使用xmlstarlet
它的sel
命令来执行您想要执行的操作。请参阅xmlstarlet sel --help
用法和示例。以你的例子来说,它将是:
xmlstarlet sel -T -t -m /solr/cores/core/@name -v . -n solr.xml
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
10821 次 |
最近记录: |