Powershell比较两列与csv文件



我想比较file1.csv和file2.csv中两列的值,然后将匹配的值分配给file1.csv中的新列。

ATM,这是目前为止的工作。格式越简单越好。

$report = Import-CSV -Path "C:report.csv" -Encoding UTF8
$reference = Import-CSV -Path "C:team.csv" -Encoding UTF8
foreach ($team1 in $report){
$matched = $false
foreach ($team2 in $reference){
$obj = "" | select "Type","Setup","Responsible","Team","Main"
if($team1.'Setup' -like "*$($team2.'Main')*"){
$matchCounter++
$matched = $true
$obj.'Type' = $team1.'Type'
$obj.'Setup' = $team1.'Setup'
$obj.'Responsible' = $team1.'Responsible'
$obj.'Team' = $team2.'Team'
$obj | Export-Csv -Path "C:Output.csv" -Append -NoTypeInformation -Encoding 
UTF8
}
}
}

文件是这样的;

file1
type  setup          responsible
----  -------        -----------   
y     master fin       susan
y     sensei kuno      peter
y     sensei jon       peter
y     junior           jumo
file2
main     team
----     -----
master   sa1
sensei   sr2
jumo     st6
desired file3
type  setup       responsible  team
----  -------     -----------  -----
y     master fin     susan      sa1
y     sensei kuno    peter      sr2
y     sensei jon     peter      sr2
y     junior         jumo       st6

我想要实现的是将列setupresponsible(file1)与main列(file2)进行比较,并得到其相邻的team。现在,我不知道如何在没有file2引用的情况下跳过column1中的单元格,但存在于column2中。同样,只比较file1和file2中setup的第一个字符。

我猜你只是想这样做:

# $report = Import-CSV -Path "C:report.csv" -Encoding UTF8
$report = ConvertFrom-Csv @'
type, setup,       responsible
y,    master fin,  susan
y,    sensei kuno, peter
y,    sensei jon,  peter
y,    junior,      jumo
'@
# $reference = Import-CSV -Path "C:team.csv" -Encoding UTF8
$reference = ConvertFrom-Csv @'
main,   team
master, sa1
sensei, sr2
jumo,   st6
'@

foreach ($team1 in $report){
foreach ($team2 in $reference){
if($team1.Setup[0] -eq $team2.Main[0]){
[pscustomobject]@{
Type        = $team1.Type
Setup       = $team1.Setup
Responsible = $team1.Responsible
Team        = $team2.Team
}
}
}
} # |Export-Csv -Path .Output.csv -NoTypeInformation -Encoding UTF8

结果:

Type Setup       Responsible Team
---- -----       ----------- ----
y    master fin  susan       sa1
y    sensei kuno peter       sr2
y    sensei jon  peter       sr2
y    junior      jumo        st6

请注意,为了正确使用PowerShell Pipeline(和性能原因),最终的(Export-Csv) cmdlet不应该驻留在进程中,而应该位于管道的末尾。

最新更新