mariobe
Goto Top

Leere Zellen aus csv mit Powershell löschen

Mahlzeit zusammen,

ich bin noch recht neu bei PowerShell und steht hier vor einem Problem.

Ich muss aus einer .csv Datei leere Zellen entfernen oder direkt beim erstellen der .csv die überflüssigen Komma entfernen.

Es geht um folgendes:

Ein Arbeitskollege exportiert eine Datei im Format .asc für Beschriftungen, diese ist so aufgebaut, dass wenn man diese im Editor öffnet tabellarisch aussieht, leider mit vielen Leerzeichen:

                                            -1A1                         7.1
                                            -1A2                        7.13
                                            -1A4                        7.10
                                            -1K1                         7.4
                                            -1K2                         7.5
                                            -1M1                        7.13
                                            -1S1                         7.4
                                            -1S2                         7.4
                                            -1S3                         7.9
                                            -A1                          4.6
                                            -F1                          4.1
                                            A1                           3.6
                                            F1                           3.1
                                            K1                           3.1
                                            K2                          4.12
                                            K3                          4.13
                                            K4                          4.14
                                            K5                          4.15
                                            S1                           3.1
                                            S2                           3.6
                                            S3                           3.7
                                            S4                           3.8

Das Programm mit dem dann die Etiketten gedruckt werden sollen kann .csv importieren.
Also habe ich versucht per Powershell alle Leerzeichen gegen Komma zu tauschen und dass ganze als .csv zu speichern, was auch soweit klappt.
Das Problem ist aber, dass in diesem Fall glaube ich das ganze erst ab Spalte 54 los geht und ich nicht einfach die ersten 54 weglöschen kann, da bei anderen Projekten das ganze schon wieder anders aussieht.
Das nächste Problem ist dann die zweite gefüllte Spalte, die Werte werden hier aus vier Spalten verteilt, da nicht immer gleich viele Leerzeichen dazwischen sind.

Hier mal mein einfacher Code.
Push-Location $(Split-Path $Script:MyInvocation.MyCommand.Path)
$FILE = Get-Content -Path '.\ItemDesignation.asc'  
$NEWFILE = $FILE -replace ' ', ','  
$NEWFILE | Set-Content -Path '.\NameME.csv'  

Dieser ist so angelegt, dass die exportierte Datei im selben Verzeichnis genommen wird, alle Leerzeichen gegen Komma getauscht werden und das ganze dann als NameMe.csv im selben Verzeichnis gespeichert wird.

Vermutlich habe ich hier auch einen komplett falschen Ansatz.
Ich versuche halt das ganze so zu bekommen, dass da ersterWert, zweiterWert, .... neue Zeile ersterWert, zweiterWert, ..... steht. So dass damit auch Dateien bearbeitet werden können, die mehr als zwei Werte haben.

Würde mich freuen, wenn mir da wer helfen könnte.

Content-ID: 3388077969

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

Ausgedruckt am: 22.11.2024 um 20:11 Uhr

TK1987
Lösung TK1987 20.07.2022 aktualisiert um 15:19:30 Uhr
Goto Top
Moin,

Zitat von @MarioBe:
Hier mal mein einfacher Code.
$NEWFILE = $FILE -replace ' ', ','  
ändere die Zeile wie folgt ab:
$NEWFILE = $FILE -replace ' +', ','  
dadurch werden alle Leerzeichen bis zu dem nächsten Wert durch ein Komma ersetzt (das geht aber natürlich nur, falls in jeder Spalte immer ein Wert steht).

Powershell Leitfaden für Anfänger
RegEx Tutorial

Gruß Thomas
MarioBe
MarioBe 20.07.2022 um 15:22:41 Uhr
Goto Top
Ich Danke Dir @tk198 !
Ich hing den ganzen morgen an dem Problem.

P.S.
Die von Dir verlinkten Artikel werde ich mir mal zu Gemüte führen.