我有一个名为Full-List.csv的csv文件,其中包含如下列
Old_URL Number
我有另一个csv文件Sub-List.csv,它有这样的列
Old_URL New_URL Title Owner
我只是想知道我如何比较两个csv文件使用Old_URL列和输出到另一个csv文件,看起来像这样。基本上它会包括一个“数字”列现在。
New_URL Title Owner Number
$left = Import-Csv 'C:\Users\Downloads\New folder\Full-List.csv'
$right = Import-Csv 'C:\Users\Downloads\New folder\Sub-List.csv'
Compare-Object -ReferenceObject $left -DifferenceObject $right -Property Old_URL -IncludeEqual -ExcludeDifferent |
ForEach-Object {
$iItem = $_
$ileft = $left.Where({$_.Old_URL -eq $iItem.Old_URL })
$iright = $right.Where({$_.Old_URL -eq $iItem.Old_URL})
[pscustomobject]@{
New_URL = $iright.New_URL
Number =$ileft.Number
Title = $iright.Title
Owner =$iright.Owner
}
} | Export-Csv 'C:\Users\Downloads\New folder\Combined.csv' -NoTypeInformation
在两个文件中都有匹配的Old_URL,但由于某些原因,我的Combined.csv输出为空,因此任何帮助或建议都将非常感谢。
1条答案
按热度按时间6l7fqoea1#
你真的应该考虑使用hash table,
Group-Object -AsHashtable
在简化这个过程方面做得很好。一旦你有了查找表,你就可以枚举Full-List
CSV并只输出那些具有相关Old_URL
值的对象: