gpt4 book ai didi

powershell - 在变量上存储不同的位置编号

转载 作者:行者123 更新时间:2023-12-03 00:07:33 26 4
gpt4 key购买 nike

我将此输出写入文本文件:

DataStore_Checksum.txt:65:esentutl : ERROR: page 3401 checksum failed
DataStore_Checksum.txt:69: + CategoryInfo : NotSpecified: (ERROR: page 3401 checksum failed:String) [], RemoteException
DataStore_Checksum.txt:73:ERROR: page 6131 checksum failed
DataStore_Checksum.txt:74:ERROR: page 6357 checksum failed

我需要存储每个校验和失败的页码。在这种情况下, [3401, 6131, 6357]

我尝试使用两种方法:
ToString().Split(' ')[2]
'\d pattern matches

但是页码的行内容位置在每一行上都不同。出于某种原因, \d语法不适用于 Select-String-Split

有任何想法吗?

最佳答案

假设可以将整个输入文件加载到内存中,以更简洁的方式补充Mathias R. Jessen's helpful answer:

[regex]::Matches((Get-Content -Raw file.txt), '(?<=\bERROR: page )\d+').Value
  • [regex]::Matches()在指定正则表达式的输入字符串中查找所有匹配项。
  • 负后置断言(?<=\bERROR: page )查找字符串ERROR: page而不将其包含在每个匹配项中,因此匹配项仅包含页码(\d+)。
  • 在所有匹配项上访问.Value属性,然后仅返回页码数组(作为字符串)。

  • 上面的代码会生成一个常规的PowerShell数组( [object[]]),其中包含所有页码:

    3401
    3401
    6131
    6357

    如果需要消除重复项:
  • 如果总是将重复项分组在一起,则将上面的命令通过管道传递给| Get-Unique
  • 如果未分组,则管道传递到| Select-Object -Unique
  • 如果您想按页码进行排序,同时消除重复,请按照Mathias的答案中的说明,将其传递到| Sort-Object -Unique
  • 关于powershell - 在变量上存储不同的位置编号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57467745/

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