是否存在将管道输出重定向为文件的方法



我使用xmllint来选择节点,我的测试目的1.xml看起来像这个

<resources>
<item>
<label>LABEL</label>
<value>VALUE</value>
<description>DESCRIPTION</description>
</item>
<item>
<label>LABEL</label>
<value>VALUE</value>
<description>DESCRIPTION</description>
</item>
</resources>
$ xmllint --xpath '/resources/item/value' 1.xml
<value>VALUE</value><value>VALUE</value>

命令喜欢上面的是工作良好。

然后我尝试与管道|结合,出现错误

$ cat 1.xml | xmllint --xpath '/resources/item/value'
Usage : xmllint [options] XMLfiles ...
...(help info)

我想原因是管道传输将cat的输出作为流处理,但xmllint只能接收文件路径作为参数。那么,有什么办法可以解决这个问题吗?或者其他选择?

当然。如果我的猜测是错误的,指出真正的原因对我也很有帮助

抱歉

我的英语很差。请原谅语法或打字错误。我正在尽力提高。

我从未使用过xmllint,但从它的手册页中,我可以看到:

xmllint程序解析一个或多个XML文件,在命令行上指定为XML-FILE(如果提供的文件名为-,则为标准输入

因此,以下操作应该有效:

xmllint --xpath '/resources/item/value' 1.xml

或者,如果您坚持输入应该通过stdin、

xmllint --xpath '/resources/item/value' - <1.xml

作为替代方案,您可以通过--shell选项将xmllint命令传递到stdin

echo -e 'cat /resources/item/valuenbye' | xmllint --shell 1.xml

(echo 'cat /resources/item/value'; echo 'bye') | xmllint --shell 1.xml

相关内容

  • 没有找到相关文章

最新更新