希望你能帮忙!我一直在尝试使用compare-object命令,取得了不同程度的成功,但并不像我需要的那样。我开始认为也许比较不是答案。
我有两个CSV文件:RESULTS1和RESULTS2
RESULTS1有几个带标题的列......
DATE DAY LETTER CAR NUMBER NEW
RESULTS2有两列带标题......
CAR COLOUR
这是我想要实现的输出......仅使用CAR列,从RESULTS1中识别汽车并从RESULTS2中的CAR列中删除它们(例如,如果福特列在两个CSV中,请不要不要在输出中显示它。输出将列出CAR列中剩余的汽车。我仍然需要打印(作为输出CSV)以下四列...(或者至少,今天的日期,日期和CAR)。
DATE DAY LETTER CAR
答案 0 :(得分:0)
# put this script in the same folder as the 2 csv files
$results1 = (Get-ChildItem | where name -Match "RESULTS1.csv").FullName
$results2 = (Get-ChildItem | where name -Match "RESULTS2.csv").FullName
$csv1 = Import-Csv $results1 # imports the RESULTS1.csv
$csv2 = Import-Csv $results2 # imports the RESULTS2.csv
$cars1 = @() # car names from 1st csv
$cars2 = @() # car names from 2nd csv
foreach ($line in $csv1)
{$cars1 += ($line.CAR).Trim()}
foreach ($line in $csv2)
{$cars2 += ($line.CAR).Trim()}
$unique = Compare-Object $cars1 $cars2
$unique_cars = ($unique).InputObject # unique cars
$results3 = @()
foreach ($line in $csv2) {foreach ($car in $cars1)
{ if ($line -notcontains $car) {if ($results3 -notcontains $line) {$results3 += $line} } }
} $results3
我用我的2个csv文件用相同的标题测试了这个脚本。你可以改变
if ($line -notcontains $car)
到
if ($line -contains $car)
如果你想要相反的结果