我有一个 configuration.csv
包含这样的模板数据:
| path | item | value | type |
|------------|-------|--------|------|
| some/path | item1 | value1 | ALL |
| some/path | item2 | UPDATE | ALL |
| other/path | item1 | value2 | SOME |
和
customization.csv
具有服务特定配置的:| path | item | value | type |
|------------|-------|--------|------|
| some/path | item2 | value3 | ALL |
| new/path | item3 | value3 | SOME |
我的目标是合并它们并最终得到如下结果:
| path | item | value | type |
|------------|-------|--------|------|
| some/path | item1 | value1 | ALL |
| some/path | item2 | value3 | ALL |
| other/path | item1 | value2 | SOME |
| new/path | item3 | value3 | SOME |
这应该 添加任何新条目和更新 任何现有的。没有一列可用于唯一标识 -
path
和 item
需要组合,因为它们保证是唯一的。
最佳答案
我建议使用 Compare-Object
并作为 customization.csv
中的值应坚持将此文件值用作 -ReferenceObject
## Q:\Test\2019\03\01\SO_54948111.ps1
$conf = Import-Csv '.\configuration.csv'
$cust = Import-Csv '.\customization.csv'
$NewData = Compare-Object -ref $cust -diff $conf -Property path,item -PassThru -IncludeEqual|
Select-Object -Property * -ExcludeProperty SideIndicator
$NewData
$NewData |Export-Csv '.\NewData.csv' -NoTypeInformation
样本输出
> Q:\Test\2019\03\01\SO_54948111.ps1
path item value type
---- ---- ----- ----
some/path item2 value3 ALL
some/path item1 value1 ALL
other/path item1 value2 SOME
new/path item3 value3 SOME
关于powershell - 在添加新条目和覆盖现有条目时合并两个 CSV 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54948111/