首先,我对 shell、Java、Python、Perl 和任何其他基于 Linux 的脚本语言非常陌生。我需要做一些我认为看起来相对简单但无法正常工作的事情。我使用过 awk 和 xpath(就像 awk 输出更好,但似乎不太容易使用)。
首先,我将向您展示我需要解析的 .xml 输出:
块引用
<CLIOutput>
<Data>
<Row>
<Name>PROD3_A2_LUN10</Name>
<Type>VMFS</Type>
<Accessible>Yes</Accessible>
<Hosts>esx01s112</Hosts>
</Row>
<Row>
<Name>PRIVATE_VDI_SDLC3_A2_LUN174</Name>
<Type>VMFS</Type>
<Accessible>Yes</Accessible>
<Hosts>esx02s104</Hosts>
</Row>
<Row>
<Name>datastore1</Name>
<Type>VMFS</Type>
<Accessible>Yes</Accessible>
<Hosts>esx01s100</Hosts>
</Row>
</data>
</CLIOutput>
理想情况下,我希望不仅能够报告“名称、类型、可访问性和主机”的 XML 属性,而且还能够在其中报告以仅发送我想要的输出,即想要报告所有“名称”以“P”开头。迄今为止,我的代码尝试是:
* awk '$1~"^(" s ")$"{print $2}' RS=\< FS=\> s="Name" sdlcproxy1diff.xml -- shows me all "Name" items.|
* xpath datastore.xml '/CLIOutput/Data/Row/*[self::Name]/text()' datastore.xml 2>/dev/null -- shows all "Name" items, but output is horrible.
提前致谢!!