你能再一次帮助我无知的灵魂吗?
嘿,甜心!我有一个脚本,可以查看像这样的$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
包含组成组的元素集合(此处未使用)。