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:
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.
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.
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.
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 3388077969
Url: https://administrator.de/contentid/3388077969
Ausgedruckt am: 22.11.2024 um 20:11 Uhr
2 Kommentare
Neuester Kommentar
Moin,
ändere die Zeile wie folgt ab:
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
ändere die Zeile wie folgt ab:
$NEWFILE = $FILE -replace ' +', ','
Powershell Leitfaden für Anfänger
RegEx Tutorial
Gruß Thomas