Doppelte (3,4,5-fache...) Zeilen aus csv datei entfernen
Hallo Forum,
nachdem ich letztens hier tolle Hilfe bekommen habe stehe ich jetzt vor einem neuen Problem dass ich leider nicht alleine gelöst bekomme:
Ich habe eine CSV Datei mit folgenden Aufbau:
7.87815,49.171267,"S3W0QA"
7.7283,49.086917,"S4W0QA"
7.602317,49.108617,"S5W0QA"
7.761333,49.256583,"S6W0QA"
7.87815,49.171267,"S3W0QA"
7.7283,49.086917,"S4W0QA"
8.106033,49.347967,"XXVZVG :Parkplatz Königsmühle"
7.602317,49.108617,"S5W0QA"
7.761333,49.256583,"S6W0QA"
7.87815,49.171267,"S3W0QA"
7.7283,49.086917,"S4W0QA"
Als Ergebniss sollte dies hier herauskommen:
7.87815,49.171267,"S3W0QA"
7.7283,49.086917,"S4W0QA"
7.602317,49.108617,"S5W0QA"
7.761333,49.256583,"S6W0QA"
8.106033,49.347967,"XXVZVG :Parkplatz Königsmühle"
Versucht habe ich dass zu lösen mit folgendem Batch:
FOR /f "tokens=1" %%f IN (acache.csv) DO call :ausgabe %%f
goto :eof
:ausgabe
goto :eof
Leider funktioniert dass ganze nicht
es wird zwar eine Datei erstellt aber die doppelten Zeilen sind immer noch vorhanden...
Irgendwie möchte der Knoten nicht platzen..Währe toll wenn mir da mal jemand einen Tipp geben könnte.
Grüsse
RichardB
nachdem ich letztens hier tolle Hilfe bekommen habe stehe ich jetzt vor einem neuen Problem dass ich leider nicht alleine gelöst bekomme:
Ich habe eine CSV Datei mit folgenden Aufbau:
7.87815,49.171267,"S3W0QA"
7.7283,49.086917,"S4W0QA"
7.602317,49.108617,"S5W0QA"
7.761333,49.256583,"S6W0QA"
7.87815,49.171267,"S3W0QA"
7.7283,49.086917,"S4W0QA"
8.106033,49.347967,"XXVZVG :Parkplatz Königsmühle"
7.602317,49.108617,"S5W0QA"
7.761333,49.256583,"S6W0QA"
7.87815,49.171267,"S3W0QA"
7.7283,49.086917,"S4W0QA"
Als Ergebniss sollte dies hier herauskommen:
7.87815,49.171267,"S3W0QA"
7.7283,49.086917,"S4W0QA"
7.602317,49.108617,"S5W0QA"
7.761333,49.256583,"S6W0QA"
8.106033,49.347967,"XXVZVG :Parkplatz Königsmühle"
Versucht habe ich dass zu lösen mit folgendem Batch:
FOR /f "tokens=1" %%f IN (acache.csv) DO call :ausgabe %%f
goto :eof
:ausgabe
Leider funktioniert dass ganze nicht
Irgendwie möchte der Knoten nicht platzen..Währe toll wenn mir da mal jemand einen Tipp geben könnte.
Grüsse
RichardB
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 109779
Url: https://administrator.de/forum/doppelte-3-4-5-fache-zeilen-aus-csv-datei-entfernen-109779.html
Ausgedruckt am: 08.05.2025 um 23:05 Uhr
5 Kommentare
Neuester Kommentar
Hallo RichardB!
Das Problem sind die enthaltenen Anführungszeichen - diese musst Du für eine Suche mit einem vorangestellten "\" maskieren.
Der folgende Code setzt einen Satzaufbau aus 3 Feldern, von denen nur das letzte unter Anführungszeichen steht, voraus. Das Feldtrennzeichen ist als %Delim% festzulegen.
Grüße
bastla
P.S.: Ohne die Berücksichtigung von Anführungszeichen hätte ein Oneliner direkt von der Kommandozeile genügt (zumindest, wenn es die Datei "acacheneu.csv " noch nicht gibt
):
Das Problem sind die enthaltenen Anführungszeichen - diese musst Du für eine Suche mit einem vorangestellten "\" maskieren.
Der folgende Code setzt einen Satzaufbau aus 3 Feldern, von denen nur das letzte unter Anführungszeichen steht, voraus. Das Feldtrennzeichen ist als %Delim% festzulegen.
@echo off & setlocal
set "Alt=acache.csv"
set "Neu=acacheneu.csv"
set "Delim=,"
if exist "%Neu%" del "%Neu%"
for /f "usebackq tokens=1-3 delims=%Delim%" %%a in ("%Alt%") do findstr "%%a%Delim%%%b%Delim%\"%%~c\"" "%Neu%">nul 2>nul || >>"%Neu%" echo %%a%Delim%%%b%Delim%%%c
bastla
P.S.: Ohne die Berücksichtigung von Anführungszeichen hätte ein Oneliner direkt von der Kommandozeile genügt (zumindest, wenn es die Datei "acacheneu.csv " noch nicht gibt
FOR /f "delims=" %f IN (acache.csv) DO findstr "%f" acacheneu.csv>nul 2>nul || >>acacheneu.csv echo %f
Hallo RichardB!
Noch ein Nachtrag: Eigentlich sollte (auch wenn vermutlich die Wahrscheinlichkeit gering ist, dass eine Zeile zur Gänze in einer anderen enthalten ist) die gesamte Zeile verglichen werden - dazu wäre noch ein "/x" für das "findstr" nötig. Die Zeile "7 neu" sähe dann so aus:
Grüße
bastla
Noch ein Nachtrag: Eigentlich sollte (auch wenn vermutlich die Wahrscheinlichkeit gering ist, dass eine Zeile zur Gänze in einer anderen enthalten ist) die gesamte Zeile verglichen werden - dazu wäre noch ein "/x" für das "findstr" nötig. Die Zeile "7 neu" sähe dann so aus:
for /f "usebackq tokens=1-3 delims=%Delim%" %%a in ("%Alt%") do findstr /x "%%a%Delim%%%b%Delim%\"%%~c\"" "%Neu%">nul 2>nul || >>"%Neu%" echo %%a%Delim%%%b%Delim%%%c
bastla