leknilk0815
Goto Top

Findstr - noch ein Syntax- Problem

wie lösche ich in der Zeilenmitte jeder Zeile einen Text?

Servus,
noch ein kleines Problem (leider nicht für mich...):
In LOG- Dateien stehen folgende Zeilen (der Aufbau ist immer gleich, nur die Werte unterscheiden sich):

2012/06/01 13:26:46 G-Sensor( 0.00, 0.88,-0.06) N40 05.923 E019 45.084 0km/h

Da ich diese Dateien schon vorher in einer Batch mit "findstr" nach Duplikaten absuchen und bereinigen lasse, was dank der Forumshilfe schon funktioniert, wäre es am einfachsten, wenn man die Textteile, die ich nicht brauchen kann, in derselben Batch mittels findstr entfernen könnte.
Ich bräuchte einen Befehl, der in jeder Zeile die Zeichen ab Pos. 24 die nächsten 28 Zeichen löscht.
Das selbe nochmal vom Zeilenende 8 Zeichen, so daß danach die Einträge für "G_Sensor(xxxx)" und "km/h" entfernt sind.


findstr /r /c:"%Zeile:~24,28%" - funktioniert natürlich nicht, Beispiel habe ich auch keines gefunden bzw. wieder mal übersehen...

Ich hoffe auf Nachsicht und bedanke mich schonmal vorab!

Gruß - Toni

P.S.:
Hier noch die Batch, die ich aus dem Forum zusammengeklaut und angepasst habe.
Nicht schön, ich weiß, aber sie tut das, was ich brauche.
Wenn ich jetzt noch die überflüssigen Daten mit eurer Hilfe rausbekomme, wäre ich glücklich...
@echo off & setlocal 
set "Datei=13265400.LOG"  
set "Bak=.bak"  
set "AusgabeDatei=bereinigt-1.log"  
set "Duplikate=Duplikate.txt"  
set /a LineNo=0 

move "%Datei%" "%Datei%%Bak%"  

copy nul "%Duplikate%">nul  

for /f "usebackq delims=" %%i in ("%Datei%%Bak%") do set "Zeile=%%i" & call :ProcessLine  

set "Datei=bereinigt-1.log"  
set "Bak=.bak"  
set "AusgabeDatei=bereinigt-2.log"  
set "Duplikate=Duplikate.txt"  
set /a LineNo=0 

move "%Datei%" "%Datei%%Bak%"  
copy nul "%Duplikate%">nul  

for /f "usebackq delims=" %%i in ("%Datei%%Bak%") do set "Zeile=%%i" & call :ProcessLine2  

del "%Datei%%Bak%"   
del "%Duplikate%"  

goto :eof 

:ProcessLine 
set /a LineNo+=1 

echo Validiere Zeile %LineNo% ... 

findstr /b /c:"%Zeile:~,19%" "%AusgabeDatei%">nul && >>"%Duplikate%" echo %Zeile% || >>"%AusgabeDatei%" echo %Zeile%  
goto :eof

:ProcessLine2
set /a LineNo+=1 
echo Validiere Zeile %LineNo% ... 
findstr /e /c:"%Zeile:~-30%" "%AusgabeDatei%">nul && >>"%Duplikate%" echo %Zeile% || >>"%AusgabeDatei%" echo %Zeile%  
goto :eof

Content-ID: 205772

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

Ausgedruckt am: 22.11.2024 um 02:11 Uhr

Endoro
Endoro 28.04.2013 aktualisiert um 18:55:42 Uhr
Goto Top
Hallo leknilk0815,

das geht so:
@echo off&setlocal
set "string=2012/06/01 13:26:46 G-Sensor( 0.00, 0.88,-0.06) N40 05.923 E019 45.084 0km/h"  
set "string=%string:~0,24%%string:~52,-8%"  
echo %string%

Output:
2012/06/01 13:26:46 G-Se05.923 E019 45.0

Gruss!
bastla
bastla 28.04.2013 um 18:58:30 Uhr
Goto Top
... und lässt sich so in den bestehenden Batch einbauen:
:ProcessLine2
set /a LineNo+=1 
echo Validiere Zeile %LineNo% ...
set "Reduziert=%Zeile:~,23%%Zeile:~51,-8%"  
findstr /e /c:"%Zeile:~-30%" "%AusgabeDatei%">nul && >>"%Duplikate%" echo %Zeile% || >>"%AusgabeDatei%" echo %Reduziert%  
goto :eof
- hinsichtlich der genauen Positionen (23/24, 51/52) musst Du Dir das selbst ansehen ...

Grüße
bastla
leknilk0815
leknilk0815 28.04.2013 um 19:54:53 Uhr
Goto Top
...das flutscht ja wie am Schnürchen!
Eingebaut, ein bisschen rumjongliert - passt.

...ich trau es mir fast nicht zu sagen...:
wenn man jetzt noch was einbauen könnte, das jeweils an 11,20 und 33 Stelle in jeder Zeile ein Komma einsetzt wäre die CSV- Datei fertig und ich bräuchte sie nicht noch in Excel bearbeiten.
Hintergrund ist, daß ich per GPS eine Strecke von 2x 1700km nach Albanien aufgezeichnet habe und die Strecke über Google Maps darstellen will (bzw. an OpenStreetView geben, falls die damit was anfangen können). Da ich aber pro Sekunde 10 GPS- Datensätze habe, muss das "etwas" eingedampft werden. Excel scheitert da mit 65000 Zeilen kläglich, ich auch...
Zum Eindampfen muss ich dann noch was basteln, daß die Log- Dateien per Script/Batch automatisch abgearbeitet werden, da es insgesamt etwa 250 Dateien mit je 800KB sind.
Die Konvertierung in GoogleMaps funkt schon mit den bearbeiteten Daten.
bastla
bastla 28.04.2013 um 20:04:10 Uhr
Goto Top
Hallo leknilk0815!

Das Prinzip für das Zerlegen / Zusammensetzen sollte doch eigentlich schon klar sein - anyhow:
set "Reduziert=%Reduziert:~,10%,%Reduziert:~11,8%,%Reduziert:~20,10%,%Reduziert:~31%"
nach Zeile 4 einfügen ...

Grüße
bastla
leknilk0815
leknilk0815 28.04.2013 um 20:14:26 Uhr
Goto Top
Zitat von @bastla:
Hallo leknilk0815!

Das Prinzip für das Zerlegen / Zusammensetzen sollte doch eigentlich schon klar sein -

...prinzipiell schon, aber Du hast das Wörtchen "langsam" vergessen - ich werd' langsam alt... (und bin nun doch schon über 10 Jahre aus dem Admin- Job raus)
Und - dann war da heute noch ein schöner Crash an der Kiste meiner Frau, weil Nokia zu dumm ist, die NokiaSuite so zu programmieren, daß die Kiste nicht abschaltet, wenn die Suite startet. Das hat mich "nebenbei" beschäftigt. Nach mehreren Systemwiederherstellungen gings dann irgendwann...

Vielen Dank Dir und Endoro für die Hilfe und Geduld,

Gruß - Toni