Powershell CSV Datei erste Spalte Text hinzufügen?
Hallo,
ich habe hier eine 12 MB große Text Datei mit 63042 Zeilen
Die ersten Zeile sieht wie folgt aus:
Zweite Zeile sind ja dann die Daten:
Es müsste jetzt vor der Art.Nr (766431) immer der Text AL hinzugefügt werden (AL766431). Die Original Datei könnte ggf. ersetzt werden.
Die Original Datei ist im Format ANSI soll dann aber im UTF8 speichert werden. Das hier hab ich schon gefunden und funktioniert:
Besten Dank schon mal für die Tipps!
ich habe hier eine 12 MB große Text Datei mit 63042 Zeilen
Die ersten Zeile sieht wie folgt aus:
Art.Nr.;EAN;Herst.Nr.;HWGR_BEZEICHNUNG;HERSTELLER;MWST;Bez. 1;Bez. 2;Mindestmenge;Kat.Seite;ME;EK;VK;Staffel-EK 1;Menge Staffel-EK 1;Staffel-EK 2;Menge Staffel-EK 2;Staffel-VK 1;Menge Staffel-VK 1;Staffel-VK 2;Menge Staffel-VK 2;WGR_BEZEICHNUNG;Lager/Streckenart;Status;Skontofaehig
Zweite Zeile sind ja dann die Daten:
766431;4004360957956;HN614;Bürobedarf;XX;XX;XX
Es müsste jetzt vor der Art.Nr (766431) immer der Text AL hinzugefügt werden (AL766431). Die Original Datei könnte ggf. ersetzt werden.
Die Original Datei ist im Format ANSI soll dann aber im UTF8 speichert werden. Das hier hab ich schon gefunden und funktioniert:
# Lade die CVS-Datei als Text
$text = Get-Content -Path 'c:\dateiname.csv' -Encoding Default
# Konvertiere den Text von ANSI zu UTF-8
$utf8Text = [System.Text.Encoding]::UTF8.GetString([System.Text.Encoding]::Default.GetBytes($text))
# Schreibe den konvertierten Text in eine neue CVS-Datei im Format UTF-8
$utf8Text | Set-Content -Path 'c:\dateiname.csv' -Encoding UTF8
Besten Dank schon mal für die Tipps!
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 5019375548
Url: https://administrator.de/forum/powershell-csv-datei-erste-spalte-text-hinzufuegen-5019375548.html
Ausgedruckt am: 23.04.2025 um 09:04 Uhr
4 Kommentare
Neuester Kommentar

Middaach.
Täglich grüßt das Murmeltier ...
(Konvertierung von ANSI auf UTF8 ist bei beiden u.s. Lösungen schon enthalten, geht also von ANSI Quelldaten aus, ansonsten einfach den "-Encoding" Parameter von Import-CSV anpassen )
Ausführlich
Oder als Oneliner
Oder als Alternative ohne Umwandlung in Object mit bisl Regex (schneller)
Oder direkt mit sed (am schnellsten)
Such dir aus was dir gefällt.
Gruß S.
p.s. Tante Edith: Tippfehler bei Spaltennamen korrigiert
Täglich grüßt das Murmeltier ...
(Konvertierung von ANSI auf UTF8 ist bei beiden u.s. Lösungen schon enthalten, geht also von ANSI Quelldaten aus, ansonsten einfach den "-Encoding" Parameter von Import-CSV anpassen )
Ausführlich
# Dateipfad
$file = "C:\dateiname.csv"
# ANSI CSV importieren
$csv = Import-CSV $file -Delimiter ";" -Encoding Default
# lines ändern
foreach($line in $csv){$line.'Art.Nr.' = "AL" + $line.'Art.Nr.'}
# CSV i UTF8 Format exportieren
$csv | export-csv $file -Delimiter ";" -NoTypeInformation -Encoding UTF8
(Import-CSV "C:\dateiname.csv" -Delimiter ";" -Encoding Default) | %{$_.'Art.Nr.' = "AL" + $_.'Art.Nr.';$_} | export-csv "C:\dateiname.csv" -Delimiter ";" -NoTypeInformation -Encoding UTF8
(Get-Content -Path 'c:\dateiname.csv' -Encoding Default -Raw -ReadCount 1000) -replace '(?m)^\d','AL$0' | Set-Content 'c:\dateiname.csv' -Encoding UTF8
sed -rie 's/^[0-9]/AL\0/' dateiname.csv
Gruß S.
p.s. Tante Edith: Tippfehler bei Spaltennamen korrigiert
Moin,
Punkte im Spaltennamen? Wer macht denn sowas?
Liebe Grüße
Erik
Punkte im Spaltennamen? Wer macht denn sowas?
Liebe Grüße
Erik

Das ist ja ehrlich gesagt noch harmlos. Da habe ich schon andere Schweinereien wie Zeilenumbrüche oder Spaltennamen die fast ein Roman hätten sein können im Header gesehen😅.
Und die Deppen die immer wieder Semikolons am Ende der letzten Spalte setzen gehören auch allesamt mal kastriert 🐿️.
Frohe Weihnachtswoche allerseits.
Gruß s.
Und die Deppen die immer wieder Semikolons am Ende der letzten Spalte setzen gehören auch allesamt mal kastriert 🐿️.
Frohe Weihnachtswoche allerseits.
Gruß s.