次のようなCSVが1つあります。
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がどのように見えるかです:
私はこれがあなたが求めているものだと信じています
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 “;”
ここに少し少ないコードで:
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 AsNeeded
をExport-CSV
に追加するだけです。
powerShell 6以下を使用している場合は、新しいファイルを作成した後でそれらを置き換えることができます。スクリプトに次の行を追加するだけです。
$File = Get-Content $DestinationPath -Encoding UTF8
$File -replace '"','' | Out-File $DestinationPath -Encoding utf8 -Force
ただし、引用符を置き換えることはお勧めしません
PowerShellはありませんが、 Notepad ++ が手元にあるかもしれません。
あなたが持っている場合:
^([^;]+);
(まさにこのパターン!)$1
私のために働く、あなたも助けるかもしれない:)