我试着在powershell中使用哈希表来做vlookup,但是有些值有多个匹配项,正如你所知道的,vlookup只匹配第一个值,然后继续,所以我希望得到一些帮助来完成下面的工作,为每个记录分配一个唯一的id。
样本数据:
| 组名|计数如果|
| - ------|- ------|
| 漫威|三个|
| 漫威|三个|
| 漫威|三个|
| 数据控制单元|四个|
| 数据控制单元|四个|
| 数据控制单元|四个|
| 数据控制单元|四个|
| 世界银行|五个|
| 世界银行|五个|
| 世界银行|五个|
| 世界银行|五个|
| 世界银行|五个|
预期输出:
| 组名|计数如果|唯一ID|
| - ------|- ------|- ------|
| 漫威|三个|漫威3|
| 漫威|三个|漫威2|
| 漫威|三个|漫威一号|
| 数据控制单元|四个|DCU-4|
| 数据控制单元|四个|数据控制单元-3|
| 数据控制单元|四个|DCU-2|
| 数据控制单元|四个|DCU-1|
| 世界银行|五个|WB-5|
| 世界银行|五个|白细胞4号|
| 世界银行|五个|白细胞3号|
| 世界银行|五个|白细胞2号|
| 世界银行|五个|白细胞1号|
我尝试过使用ref给值附加一个id,但是它没有提供定向结果。
uid=0
$filename | Select-Object @{n="UniquidID"; e={$_.GroupName,(([ref]$uid).Value++) -Join "-" }}
上面的代码返回UniqueID如下:
| 唯一ID|
| - ------|
| 奇迹-0|
| 漫威一号|
| DCU-2|
| 漫威3|
| ...|
1条答案
按热度按时间63lcw9qa1#
如果我没理解错的话,您只需要循环
GroupName
,然后创建一个新的UniqueID
属性,该属性使用GroupName
的值加上一个从1
开始的索引:输出应该看起来像一个预期的,缺点是
Group-Object
不会保持相同的顺序作为您的输入,但这可以解决Sort-Object
如果需要。