johnny-cgn
Goto Top

Powershell Ersetzen von Zahlenfolgen

Liebe Administratoren,

ich bekomme von einem Kunden eine CSV zur Verfügung gestellt, in der zu dessen internen Verwendung in einer Preisspalte zum Teil Zahlenwerte die entfernt werden müssen.
Ich versuchte das auf dem folgenden Weg zu lösen.
$CSV = import-csv $import -UseCulture

$CSV = $CSV | select-object @{Name="SKU";Expression={$_.Artikelnummer}},@{Name="MIN_PRICE";Expression={$_."PRICE" -replace '111111';$Null}}  
$CSV = $CSV | select-object @{Name="SKU";Expression={$_.SKU}},@{Name="MIN_PRICE";Expression={$_."MIN_PRICE" -replace '222222';$Null}}  
$CSV = $CSV | select-object @{Name="SKU";Expression={$_.SKU}},@{Name="MIN_PRICE";Expression={$_."MIN_PRICE" -replace '333333';$Null}}  
$CSV = $CSV | select-object @{Name="SKU";Expression={$_.SKU}},@{Name="MIN_PRICE";Expression={$_."MIN_PRICE" -replace '444444';$Null}}  
$CSV = $CSV | select-object @{Name="SKU";Expression={$_.SKU}},@{Name="MIN_PRICE";Expression={$_."MIN_PRICE" -replace '555555';$Null}}  
$CSV = $CSV | select-object @{Name="SKU";Expression={$_.SKU}},@{Name="MIN_PRICE";Expression={$_."MIN_PRICE" -replace '666666';$Null}}  
$CSV = $CSV | select-object @{Name="SKU";Expression={$_.SKU}},@{Name="MIN_PRICE";Expression={$_."MIN_PRICE" -replace '777777';$Null}}  
$CSV = $CSV | select-object @{Name="SKU";Expression={$_.SKU}},@{Name="MIN_PRICE";Expression={$_."MIN_PRICE" -replace '888888';$Null}}  
$CSV = $CSV | select-object @{Name="SKU";Expression={$_.SKU}},@{Name="MIN_PRICE";Expression={$_."MIN_PRICE" -replace '999999';$Null}}  


$CSV |export-csv c:\foo\test1.csv -UseCulture -notypeinformation

Das ist leider weder sonderlich elegant, noch funktioniert es.
Das Ergebnis ist gefüllt mit Leerzeichen:
"SKU";"MIN_PRICE"
"AT_103965_AD";"19,95 "
"AT_106169_AD";"15,95 "
"AT_107716_AD";"10,95 "
"AT_108721_122_AD";"39,95 "


Die Position der Leerzeichen hinter den Werten finde ich komisch, da die ersetzen Zahlenfolgen vor den Preisen stehen UND anfangen kann ich mit dem Ergebnis so auch nix.

Content-Key: 307768

Url: https://administrator.de/contentid/307768

Printed on: April 26, 2024 at 18:04 o'clock

Mitglied: 129813
Solution 129813 Jun 21, 2016 updated at 11:16:10 (UTC)
Goto Top
Hi.
$CSV = import-csv $import -UseCulture
$CSV | %{$_.Artikelnummer -replace '(1|2|3|4|5|6|7|8|9){6}',''}   
$CSV | select @{n="SKU";e={$_.Artikelnummer}},@{n="MIN_PRICE";e={$_."PRICE"}} | export-csv c:\foo\test1.csv -UseCulture -notypeinformation  
This regex: (1|2|3|4|5|6|7|8|9){6} matches your single 111111,222222,333333,... and so on in one small piece of expression face-wink.

Regards