获取xmllint以输出xpath结果\n-分隔,用于属性选择器

SF.*_*SF. 22 xml shell parsing

如何让xmllint为"每行"属性输出xpath选择器的多个结果?

举个例子:

  <?xml version="1.0" encoding="ISO-8859-1"?>
  <config>
          <tagX key1="value1 " key2=" value2"/>
          <tagY key3="value3" key4=" value4 "/>
  </config>


  $ xmllint example.xml --xpath "/config/*/@*"
Run Code Online (Sandbox Code Playgroud)

结果是:

   key1="value1 " key2=" value2" key3="value3" key4=" value4 "
Run Code Online (Sandbox Code Playgroud)

我想得到的是:

   key1="value1 "
   key2=" value2"
   key3="value3"
   key4=" value4 "
Run Code Online (Sandbox Code Playgroud)

我需要在偶数引号之后拆分,还是有更简洁的方法来做到这一点?

有一个相关的问题,关于相同的主题,除了它是关于挑选的内容<tag>value</tag>,而不是<tag attribute="value" />

dev*_*ull 14

你可以试试:

$ xmllint --shell inputfile <<< `echo 'cat /config/*/@*'`
Run Code Online (Sandbox Code Playgroud)

grep但是,您可能需要输出,以便过滤不需要的行.

  • here-doc重定向很奇怪,应该足够说`<<<'cat/config/*/@*'` (4认同)

tre*_*mby 6

如果这是一个选项,请尝试使用 xmlstarlet:

xmlstarlet sel -t -v "/config/*/@*" example.xml