Powershell - Zeilen in einer csv löschen bis
Hello alle miteinander
Ich versuche mich (noch immer
noch nicht aufgegeben) im scripten mit der Powershell. Jetzt habe ich folgendes Problem, mir fehlt ein Befehl (falls es ihn gibt
):
Ich habe mit dumpedid eine csv erstellt, die nicht benötigten Zeilen gelöscht, benötigte eingefügt, geht erstaunlich gut, außer einer Sache:
Es gibt folgende Daten:
DumpEDID v1.05
*
Active : Yes
Registry Key: ....
*
*
Active : No
Registry Key : .....
*
*
Ich möchte jetzt, daß die Powershell sobald sie den Eintrag "Active : No" sieht alles zwischen den Sterndln löschen, ob mit oder ohne ist nicht so wichtig, Zeilen löschen, wo kein " : " drinnen ist schaffe ich
jedoch das "Zeilen löschen bis zum Zeichen * " da habe ich jetzt lange gesucht und nichts gefunden.
Nachdem die Verarbeitung der Datei mit der powershell erfolgt sollte es eben ein "Powershellvariante" sein.
Ein Link auf eine Seite wo dies beschrieben ist, vielleicht mit anderen (guten) Tipps ist ebenfalls willkommen.
Danke
Franz
Ich versuche mich (noch immer
Ich habe mit dumpedid eine csv erstellt, die nicht benötigten Zeilen gelöscht, benötigte eingefügt, geht erstaunlich gut, außer einer Sache:
Es gibt folgende Daten:
DumpEDID v1.05
*
Active : Yes
Registry Key: ....
*
*
Active : No
Registry Key : .....
*
*
Ich möchte jetzt, daß die Powershell sobald sie den Eintrag "Active : No" sieht alles zwischen den Sterndln löschen, ob mit oder ohne ist nicht so wichtig, Zeilen löschen, wo kein " : " drinnen ist schaffe ich
Nachdem die Verarbeitung der Datei mit der powershell erfolgt sollte es eben ein "Powershellvariante" sein.
Ein Link auf eine Seite wo dies beschrieben ist, vielleicht mit anderen (guten) Tipps ist ebenfalls willkommen.
Danke
Franz
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 315216
Url: https://administrator.de/forum/powershell-zeilen-in-einer-csv-loeschen-bis-315216.html
Ausgedruckt am: 09.04.2025 um 16:04 Uhr
7 Kommentare
Neuester Kommentar

Zitat von @Franz-Josef-II:
Es gibt folgende Daten:
DumpEDID v1.05
*
Active : Yes
Registry Key: ....
*
*
Active : No
Registry Key : .....
*
*
Es gibt folgende Daten:
DumpEDID v1.05
*
Active : Yes
Registry Key: ....
*
*
Active : No
Registry Key : .....
*
*
Hi
This is definitely no valid CSV, so please post a complete example in Code-Tags
Thanks!
Regards

This is no CSV, where are the columns and headers ??
Hallo Franz,
eine CSV sieht anders aus da stimme ich @129813 zu
Aber wenn es nur ein Textfile ist lassen sich die Abschnitte mit "Active: No" folgendermaßen löschen:
Hier noch die ausführliche Beschreibung des Regex-Strings
Grüße Uwe
eine CSV sieht anders aus da stimme ich @129813 zu
Aber wenn es nur ein Textfile ist lassen sich die Abschnitte mit "Active: No" folgendermaßen löschen:
$file = 'C:\daten.csv'
(gc $file | out-string) -replace '(?ism)\*+\s*^Active\s*:\s?No.*?^\*+','' | set-content $file
Ein Link auf eine Seite wo dies beschrieben ist, vielleicht mit anderen (guten) Tipps ist ebenfalls willkommen.
Regular Expressions TutorialHier noch die ausführliche Beschreibung des Regex-Strings
(?ism)
Options: Case insensitive; Dot matches line breaks; ^$ match at line breaks;
Match the character “*” literally «\*+»
Between one and unlimited times, as many times as possible, giving back as needed (greedy) «+»
Match a single character that is a “whitespace character” «\s*»
Between zero and unlimited times, as many times as possible, giving back as needed (greedy) «*»
Assert position at the beginning of a line «^»
Match the character string “Active” literally «Active»
Match a single character that is a “whitespace character” «\s*»
Between zero and unlimited times, as many times as possible, giving back as needed (greedy) «*»
Match the character “:” literally «:»
Match a single character that is a “whitespace character” «\s?»
Between zero and one times, as many times as possible, giving back as needed (greedy) «?»
Match the character string “No” literally «No»
Match any single character «.*?»
Between zero and unlimited times, as few times as possible, expanding as needed (lazy) «*?»
Assert position at the beginning of a line «^»
Match the character “*” literally «\*+»
Between one and unlimited times, as many times as possible, giving back as needed (greedy) «+»
Da fehlen (mir persönlich) die Überschriften. Technische Frage: Ist das jetzt eine "echte" csv?
Überschriften der Spalten sind nicht zwingend erforderlich. Da hier aber die Felder mit einem Trenner (Komma) versehen sind ist es schon eher eine saubere CSV. CSV heißt ja ursprünglich "comma separated values", obwohl als Trennzeichen heutzutage auch Semikolon, Tab oder andere Zeichen zum Einsatz kommen können.Die Frage ist immer wie interpretiert das Programm die Daten, und da ist man immer auf der sicheren Seite wenn man sich an bestimmte Standards hält. Z.B. macht Excel wenn das OS auf Deutsch eingestellt ist, die automatische Umwandlung der Spalten beim direkten Öffnen nur, wenn ein Semikolon als Trenner benutzt wird, ansonsten muss man zusätzlich nochmal den Text zu Spalten Assistenten drüber laufen lassen und das Trennzeichen definieren.
p.s. Regex ist nicht schwer wenn es einmal Klick gemacht hat. 3-4 Studen intensiv damit beschäftigen und du kommst sehr weit damit. Das wissen hilft dir über Grenzen hinweg in jeder Programmiersprache und ist essentielles Grundwissen das ich dir nur unbedingt empfehlen kann. Ich nutze es täglich bei meiner Arbeit. Ohne Regex würden wir heute noch mit Split/Substr/ und Konsorten ellenlange Konstrukte bauen die kaum einer mehr nachvollziehen kann, und manche Dinge sind nur mit Regex erst überhaupt machbar.