PowerShell CSV File nach ersten oder zweiten Wort abschneiden
Hallo zusammen,
ich stehe gerade ziemlich auf dem Schlauch und hoffe mir kann jemand helfen....
Ich habe eine CSV File welche folgenden Inhalt hat:
Artikelnummer, Bezeichnung
100, Erste Bezeichnung XYZ
101, Zweite Lange Bezeichnung XYZ XYZ
102, Dritte Bezeichnung XYZ
103, Vierte Weitere Bezeichnung Text Text
Jetzt möchte ich mir ein PowerShell Script erstellen welches die CSV File einliest und immer alles nach dem ersten Wort abschneidet, aber wenn gewisse Schlagwörter da sind wie "Lange", "Weitere" soll es die erst ab dem zweiten oder Dritten Wort den Text abschneiden.
Erwünschtes Ergebnis wäre dann so:
Artikelnummer, Bezeichnung
100, Erste
101, Zweite Lange
102, Dritte
103, Vierte Weitere Bezeichnung
Aber ich bekomme es einfach nicht hin.... Könnte mir vielleicht jemanden einen Hinweis geben nach was ich da suchen muss?
Alles was ich bisher gefunden habe hat mir leider nicht so richtig weitergeholfen :/
Vielen Dank schon mal falls mir jemand helfen kann.
Grüße
Somebody
ich stehe gerade ziemlich auf dem Schlauch und hoffe mir kann jemand helfen....
Ich habe eine CSV File welche folgenden Inhalt hat:
Artikelnummer, Bezeichnung
100, Erste Bezeichnung XYZ
101, Zweite Lange Bezeichnung XYZ XYZ
102, Dritte Bezeichnung XYZ
103, Vierte Weitere Bezeichnung Text Text
Jetzt möchte ich mir ein PowerShell Script erstellen welches die CSV File einliest und immer alles nach dem ersten Wort abschneidet, aber wenn gewisse Schlagwörter da sind wie "Lange", "Weitere" soll es die erst ab dem zweiten oder Dritten Wort den Text abschneiden.
Erwünschtes Ergebnis wäre dann so:
Artikelnummer, Bezeichnung
100, Erste
101, Zweite Lange
102, Dritte
103, Vierte Weitere Bezeichnung
Aber ich bekomme es einfach nicht hin.... Könnte mir vielleicht jemanden einen Hinweis geben nach was ich da suchen muss?
Alles was ich bisher gefunden habe hat mir leider nicht so richtig weitergeholfen :/
Vielen Dank schon mal falls mir jemand helfen kann.
Grüße
Somebody
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 445957
Url: https://administrator.de/contentid/445957
Ausgedruckt am: 22.11.2024 um 00:11 Uhr
3 Kommentare
Neuester Kommentar
Einfache Split und nen switch für die Bedingungen benutzen.
$csv = Import-CSV "D:\pfad\datei.csv" -Delimiter ","
foreach($row in $csv){
$words = $row.Bezeichnung -split '\s+'
switch -Wildcard ($row.Bezeichnung){
"*Zweite*" {$row.Bezeichnung = $words[0..1] -join ' '}
"*Vierte*" {$row.Bezeichnung = $words[0..2] -join ' '}
default {$row.Bezeichnung = $words}
}
}
# hier mach was mit dem geänderten object
$csv
Moin,
das macht das, was Du willst (getestet):
hth
Erik
das macht das, was Du willst (getestet):
PARAM (
$inputfile = "test.csv",
$outputfile = "testneu.csv"
)
$data = Import-Csv $inputfile -Delimiter ","
[regex]$regex1 = "^.*Lange.*$"
[regex]$regex2 = "^.*Weitere.*$"
foreach($dataset in $data) {
$i = 0
if($dataset.Bezeichnung -match $regex1) {
$i = 1
}
elseif($dataset.Bezeichnung -match $regex2){
$i = 2
}
$split = $dataset.Bezeichnung.split(" ")
$k=0
$new = ""
while($k -le $i) {
$new = $new + $split[$k] + " "
$k++
}
$new.trimend(" ")
$dataset.Bezeichnung = $new
$dataset |export-csv $outputfile -delimiter "," -encoding utf8 -append -force
}
hth
Erik