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)
我不愿意使用它,因为,首先我不知道它在做什么.这对我来说没有任何意义,我不喜欢使用脚本我无法理解.而且,这是更重要的部分,它只给我一个副本,它不给我两个集合.我在两个违规行之后,所以我可以找到具有相同文件的两个用户.
如果有人能伸出援助之手,我会很感激.谢谢
它取决于您需要的输出格式,但是基于您已有的格式,我们可以使用它来显示控制台中的记录:
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)