gpt4 book ai didi

regex - Powershell-使用正则表达式将2个值搜索到.xml文件中

转载 作者:行者123 更新时间:2023-12-03 00:57:11 25 4
gpt4 key购买 nike

希望您在这种情况下一切顺利。

要求说明:
为了使我的生活更轻松,我尝试编写一个powershell脚本,目标是找到每个“名称”表,其中“保留”大小> 1G

下面的输出示例我想基于下面的xml文件示例获取

输出量

  • 表名称:tr_stat_history
  • 表大小:3,829623 GB
  • 表名称:appctrl_exefile
  • 表大小:1,58016 GB

  • xml文件样本
    <?xml version="1.0" encoding="utf-8" ?>
    <data>
    <record>
    <field value="tr_stat_history" name="Name"/>
    <field value="1024936 " name="Rows"/>
    <field value="3829623 KB" name="reserved"/>
    <field value="38120 KB" name="Data"/>
    <field value="120 KB" name="index_size"/>
    <field value="56 KB" name="Unused"/>
    </record>
    <record>
    <field value="appctrl_exefile" name="Name"/>
    <field value="2149679 " name="Rows"/>
    <field value="1580160 KB" name="reserved"/>
    <field value="120376 KB" name="Data"/>
    <field value="37336 KB" name="index_size"/>
    <field value="304 KB" name="Unused"/>
    </record>
    <record>
    <field value="appctrl_pdffile" name="Name"/>
    <field value="2149 " name="Rows"/>
    <field value="1580 KB" name="reserved"/>
    <field value="1203 KB" name="Data"/>
    <field value="3733 KB" name="index_size"/>
    <field value="508 KB" name="Unused"/>
    </record>
    </data>

    达到目标的最好方法是什么?

    预先感谢,

    最佳答案

    这是您可以尝试的另一种方法。我添加了注释来解释逻辑。

    # Create XML object to load data into
    $xml = New-Object -TypeName System.Xml.XmlDocument

    # Load in XML file
    $xml.Load("input.xml")

    # Iterate each child node underneath the data tag
    foreach ($node in $xml.data.ChildNodes)
    {
    # Get name and reserved fields
    $name = $node.field | Where-Object {$_.name -eq "Name"}
    $reserved = $node.field | Where-Object {$_.name -eq "reserved"}

    # Split on whitespace and take the digit
    # Do KB conversion to bytes by multiplying by 1024
    $kb = [long]$reserved.Value.Split(' ')[0] * 1024

    # Check if bigger than 1GB or 1073741824 bytes
    # Output table name and size if this is true
    if ($kb -gt 1GB)
    {
    Write-Output "Table name: $($name.Value)"
    Write-Output "Table size: $($kb / 1GB) GB"
    }
    }

    输出:
    Table name: tr_stat_history
    Table size: 3.65221309661865 GB
    Table name: appctrl_exefile
    Table size: 1.5069580078125 GB

    关于regex - Powershell-使用正则表达式将2个值搜索到.xml文件中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61227901/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com