如何通过在Powershell中保留重复的列名来合并两个csv文件
我有“a.csv”和“b.csv”。我试图用下面的命令合并它们如何通过在Powershell中保留重复的列名来合并两个csv文件,powershell,Powershell,我有“a.csv”和“b.csv”。我试图用下面的命令合并它们 cd c:/users/mine/test Get-Content a.csv, b.csv | Select-Object -Unique | Set-Content -Encoding ASCII joined.csv 但我在a.csv行的末尾添加了像b.csv这样的输出文件。我想在a.csv列的末尾添加,然后b.csv列应该开始 注意:-我无法在我的服务器中安装联接对象模块 Vm Resource SI
cd c:/users/mine/test
Get-Content a.csv, b.csv | Select-Object -Unique | Set-Content -Encoding ASCII joined.csv
但我在a.csv行的末尾添加了像b.csv这样的输出文件。我想在a.csv列的末尾添加,然后b.csv列应该开始
注意:-我无法在我的服务器中安装联接对象模块
Vm Resource SID
mnvb vclkn vxjcb
vjc.v vnxc,m bvkxncb
Vm 123 456 789
b apple banana orange
v lemon onion tomato
我的预期输出应该如下所示。无需更改顺序并保留Vm列名,无需过度写入
Vm Resource SID Vm 123 456 789
mnvb vclkn vxjcb b apple banana orange
vjc.v vnxc,m bvkxncb v lemon onion tomato
这是基于脚本而不是模块的,这意味着您可以先在另一台机器上“安装”(下载)它,然后将其(或内容)复制/粘贴到服务器上。您也可以从和脚本下载它:\Join Object.ps1
另见: 针对您的问题:
正如@Theo所评论的,“在csv中重复列名是件坏事”,特别是在PowerShell中,如果使用
ConvertFrom csv
cmdlet,则会在这样的csv文件上导致错误。尽管脚本可以通过省略
-on
参数,基于行索引连接对象。在这种情况下,默认情况下,它将在数组的两侧放置列:
Import-Csv a.csv | Join-Object (Import-Csv b.csv) | Format-Table
Vm Resource SID 123 456 789
-- -------- --- --- --- ---
{mnvb, b} vclkn vxjcb apple banana orange
{vjc.v, v} vnxc,m bvkxncb lemon onion tomato
通过使用-Discern
参数,Join Object
使用Discern值作为前缀,在两列上吐出重复值:
Import-Csv a.csv | Join-Object (Import-Csv b.csv) -Discern a,b | Format-Table
aVm Resource SID bVm 123 456 789
--- -------- --- --- --- --- ---
mnvb vclkn vxjcb b apple banana orange
vjc.v vnxc,m bvkxncb v lemon onion tomato
我无法在我的服务器中安装联接对象模块在csv(或任何类型的结构化数据)中,重复列名是一件坏事。你为什么想要那个???@熨斗它工作了…谢谢