尝试从多个字符串输出中动态提取 xml 数据(数据更改)为列格式。
当我对 SQL 数据库运行查询时,其中大约 100 个 XML 位会回显。
<?xml version="1.0"?>
<Connection>
<ConnectionType>Putty</ConnectionType>
<CreatedBy>Someone</CreatedBy>
<CreationDateTime>2014-10-27T11:53:59.8993492-04:00</CreationDateTime>
<Events>
<OpenCommentPrompt>true</OpenCommentPrompt>
<WarnIfAlreadyOpened>true</WarnIfAlreadyOpened>
</Events>
<Group>Cloud Services Client Delivery\Willis\Linux\Test - SJC</Group>
<ID>77e96d52-f165-482f-8389-ffb95b9d8ccd</ID>
<KeyboardHook>InFullScreenMode</KeyboardHook>
<MetaInformation />
<Name>Hostname-H-A10D</Name>
<OpenEmbedded>true</OpenEmbedded>
<PinEmbeddedMode>False</PinEmbeddedMode>
<Putty>
<PortFowardingArray />
<Scripting />
<SessionHost>10.0.0.100</SessionHost>
<SessionName>10.0.0.100</SessionName>
<TelnetEncoding>IBM437</TelnetEncoding>
</Putty>
<ScreenColor>C24Bits</ScreenColor>
<SoundHook>DoNotPlay</SoundHook>
<Stamp>771324d1-0c59-4f12-b81e-96edb5185ef7</Stamp>
</Connection>
我需要的是列格式的 and 。本质上,在主机名等于主机名-H-A10D 的情况下,我希望能够匹配最后的 D 并将第一列标记为 Dev,Q 作为测试,最后没有字母作为 Prod。所以输出看起来像 -->
Dev Hostname-H-A10D 10.0.0.100
Dev Hostname-H-A11D 10.0.0.101
Prod Hostname-H-A12 10.0.0.201
Test Hostname-H-A13Q 10.0.0.10
我玩过 sed/awk/etc ,而不仅仅是在不写出临时平面文件的情况下无法获得我想要的格式。我更喜欢使用 xmlstarlet 或 xmllint 之类的东西将它放入一个数组中。当然可以提出更好的建议,这就是我在这里的原因:) 谢谢大家。