Powershell脚本检查文件是否包含重复项



你能再一次帮助我无知的灵魂吗?

嘿,甜心!我有一个脚本,可以查看像这样的$sourceFile:

Some other text here*******
------------------------------------------------
F I N A L  C O U N T                    9 , 9 9
**********
** [0000789000]
ID Number:0000789000
Complete!
******************!
************

表示"总数";编号及相应的"身份证号";后。

$blocks = ((Get-Content -Path $sourceFile -Raw) -split '-{2,}').Trim() | 
Where-Object { $_ -match '(?sm)^s?F I N A L  C O U N T' }
if (!$blocks) {
Write-Host "No such counts were found."
}
else {
$blocks | ForEach-Object {
$id = $_ -replace '(?sm).ID Number:(d+).*', '$1'
}    
}

我接下来要做的,但到目前为止失败的是检查是否有相同数量的$id(重复)。例如,查看是否有一个"ID号":123456。在我的$sourceFile的另一行,如果是这样,用它做事情…任何能给我指正确方向的人我都非常感激。

*十六进制:

00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F
00000000   53 6F 6D 65 20 6F 74 68 65 72 20 74 65 78 74 20  Some other text 
00000010   68 65 72 65 2A 2A 2A 2A 2A 2A 2A 0D 0A 2D 2D 2D  here*******..---
00000020   2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D  ----------------
00000030   2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D  ----------------
00000040   2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 0D 0A 20  -------------.. 
00000050   46 20 49 20 4E 20 41 20 4C 20 20 43 20 4F 20 55  F I N A L  C O U
00000060   20 4E 20 54 20 20 20 20 20 20 20 20 20 20 20 20   N T            
00000070   20 20 20 20 20 20 20 20 39 20 2C 20 39 20 39 0D          9 , 9 9.
00000080   0A 0D 0A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 0D 0A 2A  ...**********..*
00000090   2A 20 5B 30 30 30 30 37 38 39 30 30 30 5D 0D 0A  * [0000789000]..
000000A0   49 44 20 4E 75 6D 62 65 72 3A 30 30 30 30 37 38  ID Number:000078
000000B0   39 30 30 30 0D 0A 43 6F 6D 70 6C 65 74 65 21 0D  9000..Complete!.
000000C0   0A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A  .***************
000000D0   2A 2A 2A 21 0D 0A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A  ***!..**********
000000E0   2A 2A                                            **   

一如既往爱你们!

Sv3n

您可以收集数组中的所有id并使用Group-Object查找重复项(倍数):

$ids = $blocks -replace '(?sm).*^ID Number:(d+).*', '$1'
$duplicateIds = ($ids | Group-Object | Where-Object Count -gt 1).Name
  • Group-Object输出[Microsoft.PowerShell.Commands.GroupInfo]个实例,每个实例描述一个组:
    • .Count报告组中元素的个数。

    • .Name将分组属性/ies值报告为单个字符串

      • 在手头的情况下,分组属性是每个输入对象本身,即一个字符串开始,.Name因此可以用来返回每个重复的ID,但请注意,如果你要分组非字符串值或多个属性,.Name不会反映实际的分组值。
    • .Group包含组成组的元素集合(此处未使用)。

最新更新