gpt4 book ai didi

powershell - 我怎样才能更正 .csv 文件的协调以删除重复/空值

转载 作者:行者123 更新时间:2023-12-05 01:49:10 24 4
gpt4 key购买 nike

我一直在使用来自 this answer 的代码从 MS Teams 检查类(class)花名册的添加/更改:

$set = [System.Collections.Generic.HashSet[string]]::new(
[string[]] (Import-CSV -Path stundent.csv).UserPrincipalName,
[System.StringComparer]::InvariantCultureIgnoreCase
)
Import-Csv ad.csv | Where-Object { $set.Add($_.UserPrincipalName) } |
Export-Csv path\to\output.csv -NoTypeInformation

理想情况下,我希望能够检查与新文件相比是否有删除,交换导入文件位置,并检查是否有添加。如果我的文件看起来像 Source1 和 Source2(如下),删除检查将返回 Export1,添加检查将返回 Export2。由于多个类(class)会有多个学生实例,我想在过滤器查询中包含 TeamDesc 以确保只返回该类(class)学生的特定实例。

Source1.csv

<表类="s-表"><头>团队描述用户主体名称名称<正文>团队 1student1@domain.com约翰·史密斯团队 1student2@domain.com南希画画团队 2student3@domain.com哈维登特团队 3student1@domain.com约翰·史密斯

Source2.csv

<表类="s-表"><头>团队描述用户主体名称名称<正文>团队 1student2@domain.com南希画画团队 2student3@domain.com哈维登特团队 2student4@domain.com蒂姆·塔姆斯团队 3student1@domain.com约翰·史密斯

Export1.csv

<表类="s-表"><头>团队描述用户主体名称名称<正文>团队 1student1@domain.com约翰·史密斯

导出2.csv

<表类="s-表"><头>团队描述用户主体名称名称<正文>团队 2student4@domain.com蒂姆·塔姆斯

最佳答案

尝试以下,它使用 Compare-Object通过两个列值比较 CSV 文件,只需将感兴趣的属性(列)名称传递给 -Property;使用 intrinsic .Where() method 将结果输出分成两个集合,基于输入端不同的属性组合是唯一的。 :

$removed, $added = (
Compare-Object (Import-Csv Source1.csv) (Import-Csv Source2.csv) -PassThru `
-Property TeamDesc, UserPrincipalName
).Where({ $_.SideIndicator -eq '=>' }, 'Split')

$removed |
Select-Object -ExcludeProperty SideIndicator |
Export-Csv -NoTypeInformation Export1.csv

$added |
Select-Object -ExcludeProperty SideIndicator |
Export-Csv -NoTypeInformation Export2.csv

关于powershell - 我怎样才能更正 .csv 文件的协调以删除重复/空值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/74452725/

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