PowerShell在CSV中查找重复项并输出不同的标题

Gra*_*dan 3 csv arrays powershell

我想这个问题在标题中.

我有一个类似的CSV

user,path,original_path
Run Code Online (Sandbox Code Playgroud)

我试图在原始路径上找到重复项,然后输出用户和original_path行.

这就是我到目前为止所拥有的.

$2 = Import-Csv 'Total 20_01_16.csv' | Group-Object -Property Original_path | 
Where-Object { $_.count -ge 2 } | fl Group | out-string -width 500
Run Code Online (Sandbox Code Playgroud)

这给了我Original_Path中的重复项.我可以看到所有必需的信息,但如果我知道如何使用它或将其格式化为有用的东西,我将会受到威胁.

我做了一些Googleing并找到了这个脚本:

$ROWS = Import-CSV -Path 'Total 20_01_16.csv'
$NAMES = @{}
$OUTPUT = foreach ( $ROW in $ROWS ) { 
IF ( $NAMES.ContainsKey( $ROW.Original_path ) -and $NAMES[$ROW.original_path] -lt 2 ) 
{ $ROW }
$NAMES[$ROW.original_path] += 1 }

Write-Output $OUTPUT
Run Code Online (Sandbox Code Playgroud)

我不愿意使用它,因为,首先我不知道它在做什么.这对我来说没有任何意义,我不喜欢使用脚本我无法理解.而且,这是更重要的部分,它只给我一个副本,它不给我两个集合.我在两个违规行之后,所以我可以找到具有相同文件的两个用户.

如果有人能伸出援助之手,我会很感激.谢谢

Fro*_* F. 6

它取决于您需要的输出格式,但是基于您已有的格式,我们可以使用它来显示控制台中的记录:

Import-Csv 'Total 20_01_16.csv' |
Group-Object -Property Original_path |
Where-Object { $_.count -ge 2 } |
Foreach-Object { $_.Group } |
Format-Table User, Path, Original_path -AutoSize
Run Code Online (Sandbox Code Playgroud)

或者,使用它将它们保存在新的csv文件中:

Import-Csv 'Total 20_01_16.csv' |
Group-Object -Property Original_path |
Where-Object { $_.count -ge 2 } |
Foreach-Object { $_.Group } |
Select User, Path, Original_path |
Export-csv -Path output.csv -NoTypeInformation
Run Code Online (Sandbox Code Playgroud)