Powershell CSV String in Spalte einfügen, falls Wert kürzer als 9 Zeichen
Schönen Start in die Woche liebe Administratoren,
ich bastle gerade an einer CSV und möchte eine bestimmte Spalte daraufhin überprüfen, ob die Werte kürzer als 9 Stellen sind und falls ja, mit Nullen zu Beginn auffüllen, bis es 9 Stellen sind. Ich habe es bereits mit String.Insert und If Abfrage versucht, erhalte jedoch lediglich den bereits existierenden, letzten Wert der Spalte ohne addierte Nullen zurück (im folgenden Bsp. also "91").
Die CSV sieht in etwa so aus:
und als Ergebnis würde ich es gerne wie folgt haben (Spalte VAL):
Ich habe versucht, die CSV Datei über foreach und Import-CSV einzulesen und dann innerhalb der foreach Anweisung die einzelnen Zeilen der Spalte VAL mittels IF Abfrage auf String.Length zu überprüfen und dann über String.Insert die Nullen einzufügen. Das klappt leider nicht.
Per Websuche habe ich nur mögliche Lösungen über C# aber nicht PS gefunden. Kann mir bitte jemand weiterhelfen?
Vielen Dank und schöne Grüße
narthan
ich bastle gerade an einer CSV und möchte eine bestimmte Spalte daraufhin überprüfen, ob die Werte kürzer als 9 Stellen sind und falls ja, mit Nullen zu Beginn auffüllen, bis es 9 Stellen sind. Ich habe es bereits mit String.Insert und If Abfrage versucht, erhalte jedoch lediglich den bereits existierenden, letzten Wert der Spalte ohne addierte Nullen zurück (im folgenden Bsp. also "91").
Die CSV sieht in etwa so aus:
"EMP";"TYP1";"TYP2";"DATE";"TYP3";"VAL"
"";"CT";"CS";"20200928";"VV";"1901"
"";"CT";"CS";"20200928";"VV";"20113"
"";"CT";"CS";"20200928";"VV";"159"
"";"CT";"CS";"20200928";"VV";"91"
und als Ergebnis würde ich es gerne wie folgt haben (Spalte VAL):
"EMP";"TYP1";"TYP2";"DATE";"TYP3";"VAL"
"";"CT";"CS";"20200928";"VV";"000001901"
"";"CT";"CS";"20200928";"VV";"000020113"
"";"CT";"CS";"20200928";"VV";"000000159"
"";"CT";"CS";"20200928";"VV";"000000091"
Ich habe versucht, die CSV Datei über foreach und Import-CSV einzulesen und dann innerhalb der foreach Anweisung die einzelnen Zeilen der Spalte VAL mittels IF Abfrage auf String.Length zu überprüfen und dann über String.Insert die Nullen einzufügen. Das klappt leider nicht.
Per Websuche habe ich nur mögliche Lösungen über C# aber nicht PS gefunden. Kann mir bitte jemand weiterhelfen?
Vielen Dank und schöne Grüße
narthan
Please also mark the comments that contributed to the solution of the article
Content-Key: 608375
Url: https://administrator.de/contentid/608375
Printed on: April 18, 2024 at 02:04 o'clock
2 Comments
Latest comment
Ich habe versucht, die CSV Datei über foreach und Import-CSV einzulesen und dann innerhalb der foreach Anweisung die einzelnen Zeilen der Spalte VAL mittels IF Abfrage auf String.Length zu überprüfen und dann über String.Insert die Nullen einzufügen. Das klappt leider nicht.
Überflüssig, das macht dir z.B. die padLeft Funktion viel komfortabler $csv = Import-CSV 'D:\blablub.csv' -delimiter ";"
$csv | %{$_.Val = $_.Val.padLeft(9,'0')}
$csv
# ...
$csv | %{$_.Val = '0'*(9-$_.Val.length) + $string}
# ....