如何在哈希表中的数组中创建唯一条目

邮政局长420

我在 test1.txt 中有以下行

bpdppa301p.corpads.local 86929680 JC_UNIX_FS01_INCR JC_FS UNIX_FS01_INCR incr 02/24/2022 03/30/2022 03/30/2022  disk 1645678800 backup 84 MB /dbwsrp01/dbwsrp01           JCBDD1300P.corpads.local
bpdppa302p.corpads.local 82578060 MN_DB_ORA                manual 02/24/2022 04/21/2022 03/31/2022         disk 1645678854              80 MB RMAN:PFDPRE01_jf0mjj9l_1_1    MNBDD3302P.corpads.local
bpdppa301p.corpads.local 86929880 JC_UNIX_FS01_INCR JC_FS UNIX_FS01_INCR incr 02/24/2022 03/30/2022 03/30/2022  disk 1645678800 backup 84 MB /dbwsrp01/dbwsrp01           JCBDD1300P.corpads.local

我喜欢在数字之后但在单词(incr 或 manual)之前获取唯一名称。所以我使用了下面的代码。

$backupLogLines = @(Get-Content C:\scripts\test1.txt) -match "incr|full|manual"
$planTable = @{}

foreach ($line in $backupLogLines)
{
    $metadataParts = $line -csplit "incr|full|manual"

    # first string is host name, 
    # second string is discarded, 
    # ... and the rest are backup plans
    $clientHostName,$null,$backupPlans = -split $metadataParts[0]    

    if(-not $planTable.Contains($clientHostName)){
        # Create new array containing the backup plans for the current
        $planTable[$clientHostName] = @($backupPlans)
    }
    else {
        $planTable[$clientHostName] += $backupPlans
    }
}

但 $backupPlans 也可能有重复项。如何避免这样 hashTable 只有独特的计划?

马蒂亚斯·R·杰森

您可以重写现有代码以使用嵌套哈希表,如下所示:

$backupLogLines = @(Get-Content C:\scripts\test1.txt) -match "incr|full|manual"
$planTable = @{}

foreach ($line in $backupLogLines)
{
    $metadataParts = $line -csplit "incr|full|manual"

    # first string is host name, 
    # second string is discarded, 
    # ... and the rest are backup plans
    $clientHostName,$null,$backupPlans = -split $metadataParts[0]    

    if(-not $planTable.Contains($clientHostName)){
        # Create new inner hashtable to hold observed backup plans
        $planTable[$clientHostName] = @{}
    }

    foreach($plan in $backupPlans){
        $planTable[$clientHostName][$plan] = $true
    }
}

如果对同$plan一个客户端多次观察到相同的情况,脚本现在将简单地更新/设置已经存在的同一个表条目。

最后将内部值转换为数组:

foreach($key in @($planTable.PSBase.Keys)){
    $planTable[$key] = @($planTable[$key].PSBase.Keys)
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何显示表中的唯一条目?

从列表中查找最长的唯一条目

从 pandas 数据框中的唯一条目创建字典

在多维javascript数组中查找唯一条目,顺序重要取决于级别

二维 numpy 数组列中的唯一条目

我如何创建唯一条目列表,同时还要消除同级条目?

如何在列中列出唯一条目并在下一列中列出其重复的相应时间?

循环唯一条目

按时间分组,然后仅当列表中存在唯一条目时才对唯一条目进行计数

如何解析文本文件中的字符串模式并计算唯一条目?

在 django 模型中查找唯一条目组的数量时需要帮助

汇总具有相同ID的行,并仅保留R中的唯一条目

如果R数据中满足条件,则获取唯一条目

选择列中的最后一个条目作为其他列中的唯一条目

对于列表中的每个唯一条目,请在R?中添加一个日期范围。

如何保证主机应用程序和扩展程序使用的共享应用程序容器中的核心数据存储中的唯一条目?

使用Powershell在csv中的其他列中基于唯一条目添加多个列

Powershell 获取数组第一列的唯一条目

检索只有最后一个唯一条目与 postgresql 中的条件匹配的 SQL 记录

对于每个唯一条目,包括另一个列表中的所有行

创建基于滚动计算的唯一条目(Q / KDB +)

给定其他两列的行相同,计算第三列中的唯一条目

SQL 查询为其他列中的每个唯一条目返回最高和最低

从sqlite获取所有唯一条目

计数dinstinct(),但仅包含唯一条目

CSV操作唯一条目

计算空白Excel之间的唯一条目

如何计算R中一天中最多的唯一条目数?

如何删除唯一条目并在R中保留重复项