Textteile - Strings aus Textdatei entfernen oder ändern - austauschen
Bestehende Textdateien sollen automatisiert bereinigt werden, um sie zur Weiterverarbeitung anzupassen
Servus,
ich suche nach einer Möglichkeit, vorhandene GPS- Koordinaten in z.B. GoogleEarth zu importieren, um damit im Nachhinein eine Reiseroute nachzeichnen zu können.
Ich hatte während der Reise eine Cam an der Scheibe, welche verschiedene Daten, darunter auch die Koordinaten aufzeichnet. Die Datensätze sehen so aus (beinhaltet in einer Text- Datei):
2012/05/22 17:40:23 G-Sensor(-0.13, 0.38,-1.06) N47 44.593 E011 33.605 44km/h
pro Sekunde werden ca. 10 Datensätze erzeugt.
Ich suche nun nach einer Möglichkeit, die Dateien automatisch zu bereinigen. Benötigt werden nur die Koordinaten ("N47 44.593 E011 33.605"), und davon ist auch nur 1 Satz pro Sekunde nötig, man müsste also die "Duplikate" (die restlichen ca. 9 Sätze/s) löschen, ebenso die "unnötigen" Daten wie Uhrzeit, Beschleunigungsdaten und Geschwindigkeit.
Das müsste doch eigentlich mit DOS / Batch- Mitteln zu bewerkstelligen sein?
Falls mir da jemand unter die Arne greifen könnte, wäre ich sehr dankbar, da ich momentan auf dem Schlauch stehe.
P.S.: ...vielleicht liest ja Biber "zufällig" die Zeilen...?
Servus,
ich suche nach einer Möglichkeit, vorhandene GPS- Koordinaten in z.B. GoogleEarth zu importieren, um damit im Nachhinein eine Reiseroute nachzeichnen zu können.
Ich hatte während der Reise eine Cam an der Scheibe, welche verschiedene Daten, darunter auch die Koordinaten aufzeichnet. Die Datensätze sehen so aus (beinhaltet in einer Text- Datei):
2012/05/22 17:40:23 G-Sensor(-0.13, 0.38,-1.06) N47 44.593 E011 33.605 44km/h
pro Sekunde werden ca. 10 Datensätze erzeugt.
Ich suche nun nach einer Möglichkeit, die Dateien automatisch zu bereinigen. Benötigt werden nur die Koordinaten ("N47 44.593 E011 33.605"), und davon ist auch nur 1 Satz pro Sekunde nötig, man müsste also die "Duplikate" (die restlichen ca. 9 Sätze/s) löschen, ebenso die "unnötigen" Daten wie Uhrzeit, Beschleunigungsdaten und Geschwindigkeit.
Das müsste doch eigentlich mit DOS / Batch- Mitteln zu bewerkstelligen sein?
Falls mir da jemand unter die Arne greifen könnte, wäre ich sehr dankbar, da ich momentan auf dem Schlauch stehe.
P.S.: ...vielleicht liest ja Biber "zufällig" die Zeilen...?
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 186173
Url: https://administrator.de/contentid/186173
Ausgedruckt am: 21.11.2024 um 22:11 Uhr
19 Kommentare
Neuester Kommentar
Hallo,
ungetestet würde ich es etwa so machen:
Das funktioniert nur, wenn die Datensätze in jeder Zeile stehen.
MfG,
Mathe172
ungetestet würde ich es etwa so machen:
@echo off
for /f "tokens=1* delims=:" %%A in ('findstr /n "^" "Textdatei.txt"') do :Call Processline "%%A" "%%B"
goto :eof
:Processline
set /a "Check=%~1%%10"
if "%Check"=="0" (
for /f "tokens=7-10 delims= ,()" %%A in ("%~2") do (>"Output.txt" echo.%%A %%B %%C %%D)
goto :eof
MfG,
Mathe172
moin leknilk0815,
da Du ja ca. 10 Datensätze je sekunde hast, kann es sicher mal mehr oder weniger sein.
[Edit]Code berichtigt
[/Edit]
Gruß Phil
da Du ja ca. 10 Datensätze je sekunde hast, kann es sicher mal mehr oder weniger sein.
@echo off
setlocal enabledelayedexpansion
3>"D:\Die zu erzeugende Datei.txt" (
for /f "usebackq tokens=2,6-9" %%a in ("D:\Die Auszulesende Datei.txt" ) do (
if "%%a" neq "!check!" >&3 echo %%b %%c %%d %%e
set "check=%%a"
))
[Edit]Code berichtigt
[/Edit]
Gruß Phil
Hallo,
Die Option useback der for-Schleife dürfte der Fehler sein... Sie heisst usebackq
MfG,
Mathe172
PS: Die Option Dateien hochzuladen gab es meines Wissens nach nie, wäre auch sehr unsicher. um Code einzufügen benutze
< code> (ohne Abstand)
Dein Code hier
Und Zitieren geht über den "Mit Zitat"-Link oder mit einem "> " um die Zitateebene zu erhöhen
[edit: Formatierung gefixt]
Die Option useback der for-Schleife dürfte der Fehler sein... Sie heisst usebackq
MfG,
Mathe172
PS: Die Option Dateien hochzuladen gab es meines Wissens nach nie, wäre auch sehr unsicher. um Code einzufügen benutze
< code> (ohne Abstand)
Dein Code hier
Und Zitieren geht über den "Mit Zitat"-Link oder mit einem "> " um die Zitateebene zu erhöhen
[edit: Formatierung gefixt]
im obigen Script ist vor "C:\@tmp\org-log-daten\00002500.LOG"
eine spitze Klammer, die da m.E. nicht hingehört.
Das ist eine Ausgabeumleitung. Sie leitet die Ausgabe der for-Schleife (bzw. die der echo´s darin) in die Datei umeine spitze Klammer, die da m.E. nicht hingehört.
Im Code fehlt der "THEN-Befehl" des IF´s. So sollte es klappen:
@echo off
setlocal enabledelayedexpansion
>"C:\@tmp\org-log-daten\00002500.LOG" (
for /f "useback tokens=2,5-8" %%a in
("C:\@tmp\arbeit\Routen01.txt") do (
if "%%a" neq "!check!" (
echo %%b %%c %%d %%e
set "check=%%a"
)))
Mathe172
moin,
so wie es aussieht sind die beiden Dateien Vertauscht worden.
Du liest aus einer Datei die nicht Vorhanden ist, also keine Auslösung der Schleife.
Deine Andere ("C:\@tmp\org-log-daten\00002500.LOG") Datei ist nun Leer.
Wie mathe schon bemerkte ist vor der Klammer der Forschleife die Ausgabe. In der Anweisung der Forschleife ist die Auszulesende Datei.
Bitte setze Deine Codezeilen und den Inhalt der TXT zur besseren Lesbarkeit in Codeblöcke.
<code>TEXT</code>
Beispiel berichtigt.
Gruß Phil
so wie es aussieht sind die beiden Dateien Vertauscht worden.
Du liest aus einer Datei die nicht Vorhanden ist, also keine Auslösung der Schleife.
Deine Andere ("C:\@tmp\org-log-daten\00002500.LOG") Datei ist nun Leer.
Wie mathe schon bemerkte ist vor der Klammer der Forschleife die Ausgabe. In der Anweisung der Forschleife ist die Auszulesende Datei.
Bitte setze Deine Codezeilen und den Inhalt der TXT zur besseren Lesbarkeit in Codeblöcke.
<code>TEXT</code>
Beispiel berichtigt.
Gruß Phil
Du hast den Batch zerpflückt.
Wenn Du etwas Vergleichst muss dahinter auch eine Auszuführende Aktion stehen, nicht erst eine Zeile Später.
Das meinte mathe mit Then.
Du hast über der ersten Zeile den Link: Quelltext stehen und kannst so den Gesamten Quelltext kopieren.
über den Link Drucken kannst Du den Text aber noch bearbeiten dann kopieren und in Deine Batch übertragen.
Wenn Du nun mit dem zusammengewürfeltem Gewusel nicht mehr zurechtkommst, hilft Dir der Schnipsel um den Batch Zeile für Zeile zu schreiben.
Gruß Phil
Wenn Du etwas Vergleichst muss dahinter auch eine Auszuführende Aktion stehen, nicht erst eine Zeile Später.
Das meinte mathe mit Then.
Wenn LinkeSeite Nicht RechteSeite Dann schreibe Zeile hin.
Du hast über der ersten Zeile den Link: Quelltext stehen und kannst so den Gesamten Quelltext kopieren.
über den Link Drucken kannst Du den Text aber noch bearbeiten dann kopieren und in Deine Batch übertragen.
Wenn Du nun mit dem zusammengewürfeltem Gewusel nicht mehr zurechtkommst, hilft Dir der Schnipsel um den Batch Zeile für Zeile zu schreiben.
@echo off
setlocal disabledelayedexpansion
if "%~1" equ "" echo Syntaxfehler. 1>&2 &exit /b 1
if not exist "%~1" echo Datei nicht gefunden! 1>&2 & exit /b 2
if "%~1" equ "/?" echo Schreibt Dateien mit echten Zeilenumbruechen. &echo %~n0 Quelldatei &exit /b 0
>"%temp%\%~nx1" findstr /n "^" "%~1"
3>"%~dpn1-CRLF%~x1" (for /f "usebackq delims=" %%i in ("%temp%\%~nx1") do (set "Line=%%i"
setlocal enabledelayedexpansion
>&3 echo(!Line:*:=!
endlocal
))
del "%temp%\%~nx1"
Gruß Phil
Hallo,
Also insgesammt:
Das sollte zumindest die Probleme beheben
MfG,
Mathe172
In den Ausgangsdatensätzen sind aber keine Unterschiede (Leerzeichen, minus, etc.) zu finden
Gibt es eben doch (obwohl diese nicht in den betreffenden Zeilen sind-oder irre ich mich?) - versuch mal die Delims auf "- " (ohne die ", nur Leerzeichen und Minus) zu setzen und die Tokens auf "2,8-11"Also insgesammt:
for /f "usebackq tokens=2,8-11 delims=- " %%a in ("...
MfG,
Mathe172
ja in den Zeilen 3 und 19 wäre der erste Unterschied bemerkbar geworden
das Minus tritt anstelle des Leerzeichens auf.
@leknilk Heftest Du Bitte noch ein grünes Beitrag gelöst dingens an.
Gruß Phil
03. 2012/05/23 00:00:28 G-Sensor(-0.13, 0.25,-1.06) N45 32.393 E015 35.125 115km/h
19. 2012/05/23 00:00:29 G-Sensor( 0.06, 0.13,-0.94) N45 32.381 E015 35.107 115km/h
19. 2012/05/23 00:00:29 G-Sensor( 0.06, 0.13,-0.94) N45 32.381 E015 35.107 115km/h
das Minus tritt anstelle des Leerzeichens auf.
@leknilk Heftest Du Bitte noch ein grünes Beitrag gelöst dingens an.
Gruß Phil