gpt4 book ai didi

powershell - 使用PowerShell从CSV文件中删除重复项

转载 作者:行者123 更新时间:2023-12-03 00:37:36 26 4
gpt4 key购买 nike

我有一个单列CSV文件。根据我的计算机有多少个故障代码,此列将具有不同数量的代码(最多10个子列-请参见下面的示例)。我要操作此CSV,以便输出是唯一故障代码的清晰列表。发生了。

样本CSV文件(sample.csv):

ActiveFaults

00:1523 00:1345 00:1343 90:1344

00:1523 00:1345 00:1343 90:1344

00:1523 00:1345 00:1343 90:1344

00:1523 00:1345 00:1343 90:1344

00:1523 00:1345 00:1343 90:1344 90:5900 90:8988

00:1523 00:1345 00:1343 90:1344 90:5900 90:8988

BA:8797 BA: 1330

理想的输出将是以下格式的CSV文件:

IdealOutput.csv
UniqueActiveFaults

00:1523

00:1345

00:1343

90:1344

90:5900

90:8988

BA:8797

BA:1330

任何想法如何做到这一点?我已经尝试了几种方法(使用-Sort,-Group等...,但没有一种按预期方式工作)谢谢。

最佳答案

不再考虑将文件作为CSV。

只需将其读取为一个字符串,将其按空格分隔,然后将其传送到Sort-Object -Unique即可:

$Values = (Get-Content .\sample.csv -Raw) -split '\s+' | Where-Object {$_ -like '*:*'}
"UniqueActiveFaults" |Out-File .\IdealOutput.csv
$Values | Sort-Object -Unique | Out-File .\IdealOutput.csv
-split运算符采用正则表达式作为其右侧操作数,在这种情况下为 \s+\s是“空白”字符类的简写,而 +的意思是“匹配前面的一个或多个字符”

如果文件很大,则可以在第一条语句中使用 ReadCount参数将处理分为多个块:
Get-Content .\sample.csv -ReadCount 100 |ForEach-Object {$_ -split '\s+'}

如果 :存在于文档的其他位置,并且所需值始终为以下形式
[2 character prefix]:[numerical]

您可以通过将 Where-Object过滤器更改为缩小它的范围:
{$_ -match '.{2}:\d+'}

关于powershell - 使用PowerShell从CSV文件中删除重复项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29884835/

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