Powershell: Leere Zeilen aus Array entfernen
Moin zusammen,
vermutlich ganz trivial zu lösen aber ich habe nix gefunden, was mich auf die richtige Spur bringt.
Ausgangslage:
Ich lese eine CV Datei ein, in der Spaltennamen enthalten sind, hier nur mal drei exemplarische
Da ich die Spaltennamen im Script direkt in schleifen ($c.name etc.) anspreche brauche ich die.
Die Liste die ich einlese, kommt aus unterschiedlichen Quellen, einmal aus einem System, das andere mal aus einer Vorlage für User.
Speziell bei der Vorlage für User habe ich unter umständen viele Leerzeilen, die ich herausfiltern möchte.
Mein Ansatz wäre jetzt, die Datei in ein Array einzulesen und alle befüllten Zeilen in eine anderes Array zu schreiben, welche ich anschließend weiter verwende.
Bis jetzt habe ich nur die Varianten gefunden, um das umzusetzen:
1. Array aus einer Leeren CSV Datei erstellen, in der nur die Spaltennamen enthalten sind
2. Array erstellen und mit ADD-Member jede Spalte einzeln erstellen.
3. Array kopieren und dann die Leerzeilen löschen (hier scheiterts)
4. Array komplett leeren, und dann zeilenweise in das leere schreiben, Wenn ich versuche das Array zu leeren, verliere ich aber auch immer die Spalten.
Ich bin fortgeschrittener Anfänger ...
Thx für Ideen oder Hinweise
Nagus
vermutlich ganz trivial zu lösen aber ich habe nix gefunden, was mich auf die richtige Spur bringt.
Ausgangslage:
Ich lese eine CV Datei ein, in der Spaltennamen enthalten sind, hier nur mal drei exemplarische
Name; Vorname; ID;
Mustermann; Max; MAXMU;
;;;
;;;
Da ich die Spaltennamen im Script direkt in schleifen ($c.name etc.) anspreche brauche ich die.
Die Liste die ich einlese, kommt aus unterschiedlichen Quellen, einmal aus einem System, das andere mal aus einer Vorlage für User.
Speziell bei der Vorlage für User habe ich unter umständen viele Leerzeilen, die ich herausfiltern möchte.
Mein Ansatz wäre jetzt, die Datei in ein Array einzulesen und alle befüllten Zeilen in eine anderes Array zu schreiben, welche ich anschließend weiter verwende.
Bis jetzt habe ich nur die Varianten gefunden, um das umzusetzen:
1. Array aus einer Leeren CSV Datei erstellen, in der nur die Spaltennamen enthalten sind
2. Array erstellen und mit ADD-Member jede Spalte einzeln erstellen.
3. Array kopieren und dann die Leerzeilen löschen (hier scheiterts)
4. Array komplett leeren, und dann zeilenweise in das leere schreiben, Wenn ich versuche das Array zu leeren, verliere ich aber auch immer die Spalten.
Ich bin fortgeschrittener Anfänger ...
Thx für Ideen oder Hinweise
Nagus
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 1499380818
Url: https://administrator.de/contentid/1499380818
Ausgedruckt am: 24.11.2024 um 17:11 Uhr
3 Kommentare
Neuester Kommentar
Erklärung
^[ ;]*$
Assert position at the beginning of a line «^»
Match a single character from the list “ ;” «[ ;]*»
Between zero and unlimited times, as many times as possible, giving back as needed (greedy) «*»
Assert position at the end of a line «$»
Assert position at the beginning of a line «^»
Match a single character from the list “ ;” «[ ;]*»
Between zero and unlimited times, as many times as possible, giving back as needed (greedy) «*»
Assert position at the end of a line «$»
Ergo nur Zeilen die nicht nur Leerzeichen oder Semikolons von Anfang bis Ende der Zeile besitzen werden übernommen.
Das Leerzeichen könnte man noch durch ein \s ersetzen dann werden auch Tabs und andere unsichtbare Zeichhen identifziert
Was ich noch gefunden hatte wäre das, von Microsoft hier
eine Funktion um die Properties zu kopieren - funktioniert bei mir aber nicht ...
eine Funktion um die Properties zu kopieren - funktioniert bei mir aber nicht ...
function Copy-Property ($From, $To)
> {
> $properties = Get-Member -InputObject $From -MemberType Property
> foreach ($p in $properties)
> {
> $To | Add-Member -MemberType NoteProperty -Name $p.Name -Value $From.$($p.Name) -Force
> }
> }
Die ändert ja auch nix ...
function Copy-Property {
param([io.fileinfo]$from,[IO.FileInfo]$to)
gm -InputObject $from -MemberType Property | ?{$_.Definition -match 'set;'} | select -Expand Name | %{$to.$_ = $from.$_}
}
$a = gi D:\test1.txt
$b = gi D:\test2.txt
Copy-Property $a $b