csv文件中有一堆值,列如下所示:
shouston
cgonzalez
bbrown
hlader
kpesavento
jbloom
polson
bcharlow
bcharlow
bkalt
需要查找重复项并进行修改。
# Grab CSV file
$inputFile = Import-Csv -Path $filePath
$text = (Get-Culture).TextInfo
$HashSet = [System.Collections.Generic.HashSet[string]]::new([System.StringComparer]::OrdinalIgnoreCase)
foreach ($line in $inputFile) {
$name = $line.name
$line.name = $text.ToTitleCase($name)
$firstName = $line.name.split(" ")[0]
$lastName = $line.name.split(" ")[1]
$newEmail = ($firstName[0] + $lastName).toLower()
if (!$HashSet.Add($newEmail)) {
$line.email = ($firstName[0] + $lastName + $line.location_id + "@abc.com").toLower()
}
else {
$line.email = ($firstName[0] + $lastName + "@abc.com").toLower()
}
}
$inputFile | Export-Csv $fullPath
但它不像我预期的那样工作-找到一个重复的值并修改它们。在我的情况下,位置也必须添加到第一个重复的电子邮件,例如bcharlow 1 bcharlow 2,而不是它的bcharlow,bcharlow 2。有人能帮助我-我需要如何修改脚本?
2条答案
按热度按时间wvyml7n51#
您可以使用
Group-Object
来查看重复项,例如:将给予你一个计数有多少次给定的值被看到。如果你想看到让说前3你可以管道它排序和选择
cxfofazt2#
最简单(也是最快)的方法可能是使用HashSet:
第一个