如何在 CSV 中将姓和名合并为一个

如何在 CSV 中将姓和名合并为一个

我有一个如下所示的 CSV:

Versand Vorname;Versand-Nachname;Versand-Zusatz;Versand-Firma;Versand
Thomas         ;Lellig          ;              ;             ;Brunnenstrasse 

我想将其编辑成如下所示:

Versand Vorname;Versand-Nachname ;Versand-Zusatz;Versand-Firma;Versand
Thomas Lellig  ;                 ;              ;             ;Brunnenstrasse 

因此我需要使用 PowerShell 合并名字和姓氏。

这是我的源 CSV 的图片以及编辑后的 ​​CSV 的外观:

源 CSV 文件

已编辑的 CSV 文件

答案1

这里的代码稍微少一些:

您需要读取 CSV,结合名字和姓氏,清空姓氏列,返回修改后的对象,然后再次导出。

$SourcePath = "C:\Install\testabc.csv"
$DestinationPath = "C:\Install\testbcd.csv"

Import-Csv $SourcePath -Delimiter ";" -Encoding UTF8 | ForEach-Object {
    $_."Versand Vorname" = "{0} {1}" -f $_."Versand Vorname", $_."Versand-Nachname"
    $_."Versand-Nachname" = ""
    $_
} | Export-Csv $DestinationPath -NoTypeInformation -Force -Delimiter ";" -Encoding UTF8

如果你想要不带引号的 - 我不会建议因为有些字段需要引号,您可以使用以下内容:

如果你使用的是 PowerShell 7+,你可以添加-UseQuotes AsNeededExport-CSV

如果您使用的是 PowerShell 6 及更低版本,则可以在创建新文件后替换它们,只需将以下几行添加到脚本中:

$File = Get-Content $DestinationPath -Encoding UTF8
$File -replace '"','' | Out-File $DestinationPath -Encoding utf8 -Force

不过,我不建议更换引号

答案2

没有 powershell,但也许你有记事本++在眼前?

如果您有:

  • 使用 NP++ 打开 CSV
  • 按 [Strg]+[H] 打开替换对话框窗口
  • 在左下角,将模式设置为正则表达式
  • 搜索:(^([^;]+);正是这种模式!)
  • 用。。。来代替:$1
  • 点击按钮“全部替换”

对我有用,也可能对你有帮助:)

答案3

我相信这就是你想要的

我已经在 C:\Temp 文件夹中进行了导入和导出,只需针对您的使用情况进行更改即可

$objs =@();
$output = Import-csv -Path C:\Temp\test.csv -Delimiter “;”| ForEach { 
$Object = New-Object PSObject -Property @{            
        'Versand Vorname'  = [String]::Concat($_.'Versand Vorname',' ',$_.'Versand-Nachname')
        'Versand-Nachname' = ''
        'Versand-Zusatz'  = $_.'Versand-Zusatz'   
        'Versand-Firma' = $_.'Versand-Firma'
        'Versand' = $_.'Versand'         
    }   
    $objs += $Object;
} 
$objs 
$objs | Export-CSv  C:\Temp\temp.csv -NoTypeInformation -Delimiter “;”

在此处输入图片描述

相关内容