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 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
Please also mark the comments that contributed to the solution of the article
Content-Key: 109779
Url: https://administrator.de/contentid/109779
Printed on: April 26, 2024 at 14:04 o'clock
5 Comments
Latest comment
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