Powershell Get-Content Zeilenumbrüche und leere Elemente entfernen
Hallo,
mein Ziel ist es aus einer Textdatei eine Zeile auszulesen und diese zu zerlegen, so dass ich jedes Element der Textdateizeile ansprechen kann.
Meine Textzeile sieht folgendermaßen aus:
Nummern:1 2 3 4 5 6 7 8 9 10
Die Nummern gehen in meinem Fall über die hundert hinaus. Wenn ich die Zeile über einlese, habe ich das Problem das Powershell der langen Textzeile Umbrüche verpasst. Dies führt bei mir zu dem Fehler das mein Array nach dem Split() leere Elemente enthält. Ein einfaches entfernt leider nicht diese Elemente. Wie kann ich das realisieren?
Gruß
derhoeppi
mein Ziel ist es aus einer Textdatei eine Zeile auszulesen und diese zu zerlegen, so dass ich jedes Element der Textdateizeile ansprechen kann.
Meine Textzeile sieht folgendermaßen aus:
Nummern:1 2 3 4 5 6 7 8 9 10
Die Nummern gehen in meinem Fall über die hundert hinaus. Wenn ich die Zeile über
$nummern = get-content Textdatei.txt | select-string "Nummern:" | Out-String
$nummern | ? {$_}
Gruß
derhoeppi
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 278128
Url: https://administrator.de/forum/powershell-get-content-zeilenumbrueche-und-leere-elemente-entfernen-278128.html
Ausgedruckt am: 25.04.2025 um 17:04 Uhr
6 Kommentare
Neuester Kommentar

$nummern = [regex]::match((get-content Textdatei.txt |out-string),'(?im)^Nummern:(.*)').Groups[1].Value -split '\s+'

Dein Code verfolgt leider nicht mein Ziel
Doch, genau das was du beschreibst tut er (alles in Einem)... Nur weil du es vielleicht nicht verstehst ist er nicht falsch Wenn man will kann man das auch so schreiben:
$nummern = (((get-content 'C:\data.txt') | ?{$_ -match '^Nummern:'}) -split ':')[1] -split '\s+'

Erstens ist die zweite Zeile überflüssig weil das "Nummern" durch ein Regex Group Matching schon wegradiert wird, und zweitens trimmt der Befehl trim() kein Array sondern nur Leerzeichen bei Strings.
Aber ich glaube du siehst die Ausgabe auf der Konsole einfach falsch, da sieht es manchmal so aus als wäre vor und danach ein leeres Element aber dem ist nicht so , das meint man nur wenn man in der ISE arbeitet und eine Leerzeile nach seinem Code hat
Ein $nummern.length sollte einem die genaue Array-Länge anzeigen.
Wenn ich das ganze nun ausgebe, habe ich vor der ersten und nach der letzten Zahl einen leeren Array Wert.
Kenne leider deine "genaue" Textdatei nicht (Sonderzeichen etc. pp), aber wenn der Array-Wert wirklich leer sein sollte lässt sich das schnell ausfiltern, damit das Array nur aus Zahlen und sonst nichts besteht$nummern = $nummern | ?{$_ -match "\d+"}
Aber ich glaube du siehst die Ausgabe auf der Konsole einfach falsch, da sieht es manchmal so aus als wäre vor und danach ein leeres Element aber dem ist nicht so , das meint man nur wenn man in der ISE arbeitet und eine Leerzeile nach seinem Code hat
Ein $nummern.length sollte einem die genaue Array-Länge anzeigen.