Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]


Groups > de.comp.software.misc > #185 > unrolled thread

Suche Aussortier-Programm

Started byReinhard Zwirner <reinhard.zwirner@t-online.de>
First post2021-04-30 14:04 +0200
Last post2021-05-05 14:01 +0200
Articles 18 — 6 participants

Back to article view | Back to de.comp.software.misc


Contents

  Suche Aussortier-Programm Reinhard Zwirner <reinhard.zwirner@t-online.de> - 2021-04-30 14:04 +0200
    Re: Suche Aussortier-Programm Helmut Waitzmann <nn.throttle@xoxy.net> - 2021-04-30 22:49 +0200
      Re: Suche Aussortier-Programm Reinhard Zwirner <reinhard.zwirner@t-online.de> - 2021-04-30 23:14 +0200
        Re: Suche Aussortier-Programm Helmut Waitzmann <nn.throttle@xoxy.net> - 2021-05-01 16:05 +0200
          Re: Suche Aussortier-Programm Reinhard Zwirner <reinhard.zwirner@t-online.de> - 2021-05-01 17:22 +0200
    Re: Suche Aussortier-Programm Enrik Berkhan <Enrik.Berkhan@inka.de> - 2021-04-30 21:30 +0000
      Re: Suche Aussortier-Programm Reinhard Zwirner <reinhard.zwirner@t-online.de> - 2021-05-01 16:49 +0200
    Re: Suche Aussortier-Programm Wolf gang P u f f e <remail@gmx.com> - 2021-05-02 14:15 +0200
      Re: Suche Aussortier-Programm Reinhard Zwirner <reinhard.zwirner@t-online.de> - 2021-05-02 14:44 +0200
    Re: Suche Aussortier-Programm "Wendelin Uez" <wuez@online.de> - 2021-05-02 14:31 +0200
      Re: Suche Aussortier-Programm Reinhard Zwirner <reinhard.zwirner@t-online.de> - 2021-05-02 15:38 +0200
        Re: Suche Aussortier-Programm "Wendelin Uez" <wuez@online.de> - 2021-05-03 20:28 +0200
          Re: Suche Aussortier-Programm Reinhard Zwirner <reinhard.zwirner@t-online.de> - 2021-05-04 01:27 +0200
            Re: Suche Aussortier-Programm Thomas Hochstein <thh@thh.name> - 2021-05-04 07:58 +0200
              Re: Suche Aussortier-Programm Reinhard Zwirner <reinhard.zwirner@t-online.de> - 2021-05-04 11:48 +0200
            Re: Suche Aussortier-Programm "Wendelin Uez" <wuez@online.de> - 2021-05-04 20:13 +0200
              Re: Suche Aussortier-Programm Reinhard Zwirner <reinhard.zwirner@t-online.de> - 2021-05-04 22:28 +0200
                Re: Suche Aussortier-Programm "Wendelin Uez" <wuez@online.de> - 2021-05-05 14:01 +0200

#185 — Suche Aussortier-Programm

FromReinhard Zwirner <reinhard.zwirner@t-online.de>
Date2021-04-30 14:04 +0200
SubjectSuche Aussortier-Programm
Message-ID<if2a31Fnh7hU1@mid.individual.net>
Liebe Experten,

für meinen Win10/64pro-PC suche ich ein Programm, das das im
Folgenden geschilderte Problem lösen kann:

Wenn ich wandere, habe ich als Spielzeug ein Outdoor-GPS von Garmin
dabei. Es ist so eingestellt, daß jede Sekunde die aktuelle Position
in folgendem Format in einer .gpx-Datei im Ordner "Current"
abgespeichert wird:

<trkpt lat="xx.xxxxxxxxx" lon="yyy.yyyyyyyyy">
        <time>YYYY-MM-DDThh:mm:ssZ</time>
</trkpt>

Hinzufügen möchte ich, daß die Speicherung als String ohne jegliche
Strukturierung erfolgt.

Wenn die Wanderung länger dauert und ca. 3000 Trackpunkte gespeichert
wurden, werden die in einer Datei zusammengefaßt, die in den Ordner
"Archive" verschoben wird. Diese Häppchen-Dateien sind ca. 300 kB
groß. Gleichzeitig beginnt eine neue "Trackpunktsammlung" im Ordner
"Current".

Nun ist beim letzten Mal irgendwann irgendwo irgendwie ein Malheur
passiert. Jedenfalls war eine der Dateien aus dem "Archive"-Ordner
sagenhafte 600 MB groß! Eine Analyse ergab, daß "Dateiheader" samt
"Dateiformat" in Ordnung und alle Trackpunke gespeichert sind, aber
jeder Trackpunkt mehrere 1000 Mal!

Ich suche jetzt ein Programm, das diese Datei durchflöht und außer
dem für jede Sekunde gespeicherten ersten Trackpunkt alle anderen für
diese Sekunde gespeicherten Trackpunktdaten löscht. Gibt's sowas? Ich
könnte die vorhandene Datei so vorbereiten, daß sie nur die im o. g.
Format gespeicherten Trackpunkte enthält und sonst nichts.

Für sachdienliche Hinweise dankt im voraus
freundlich grüßend

Reinhard

[toc] | [next] | [standalone]


#186

FromHelmut Waitzmann <nn.throttle@xoxy.net>
Date2021-04-30 22:49 +0200
Message-ID<83r1irxzti.fsf@helmutwaitzmann.news.arcor.de>
In reply to#185
Reinhard Zwirner <reinhard.zwirner@t-online.de>:

>für meinen Win10/64pro-PC suche ich ein Programm, das das im 
>Folgenden geschilderte Problem lösen kann:
>
>Wenn ich wandere, habe ich als Spielzeug ein Outdoor-GPS von Garmin 
>dabei. Es ist so eingestellt, daß jede Sekunde die aktuelle Position 
>in folgendem Format in einer .gpx-Datei im Ordner "Current" 
>abgespeichert wird:
>
><trkpt lat="xx.xxxxxxxxx" lon="yyy.yyyyyyyyy">
>        <time>YYYY-MM-DDThh:mm:ssZ</time>
></trkpt>
>

Also ist jeder Messpunkt ein Dreizeiler.  

Wenn man jeden Messpunkt zum Einzeiler macht (also den Zeilenwechsel 
am Ende der ersten und der zweiten Zeile entfernt), erhält man eine 
5spaltige Liste von Messpunkten.  Wenn man die nach der vierten 
Spalte sortiert, kann man anschließend aufeinanderfolgende 
Dubletten entfernen. 

>Hinzufügen möchte ich, daß die Speicherung als String ohne jegliche 
>Strukturierung erfolgt.
>
>Wenn die Wanderung länger dauert und ca. 3000 Trackpunkte gespeichert 
>wurden, werden die in einer Datei zusammengefaßt, die in den Ordner 
>"Archive" verschoben wird. Diese Häppchen-Dateien sind ca. 300 kB 
>groß. Gleichzeitig beginnt eine neue "Trackpunktsammlung" im Ordner 
>"Current".
>
>Nun ist beim letzten Mal irgendwann irgendwo irgendwie ein Malheur 
>passiert. Jedenfalls war eine der Dateien aus dem "Archive"-Ordner 
>sagenhafte 600 MB groß! Eine Analyse ergab, daß "Dateiheader" samt 
>"Dateiformat" in Ordnung und alle Trackpunke gespeichert sind, aber 
>jeder Trackpunkt mehrere 1000 Mal!
>
>Ich suche jetzt ein Programm, das diese Datei durchflöht und außer 
>dem für jede Sekunde gespeicherten ersten Trackpunkt alle anderen für 
>diese Sekunde gespeicherten Trackpunktdaten löscht. Gibt's sowas? Ich 
>könnte die vorhandene Datei so vorbereiten, daß sie nur die im o. g. 
>Format gespeicherten Trackpunkte enthält und sonst nichts.

Ja, bitte.  Das wäre gut.  


Die Zeilenwechsel entfernen kann man sicher mit «sed», «awk» oder 
auch nur dem Shell: 


Nur mit dem Shell: 


   while IFS= read erste_zeile &&
     IFS= read zweite_zeile &&
     IFS= read dritte_zeile
   do
     printf '%s\n' "$erste_zeile $zweite_zeile $dritte_zeile"
   done < 600MB_Datei.gpx


Schneller läuft es wahrscheinlich mit Hilfe von «sed»: 


   (
     sp1='<trkpt' &&
     sp2='lat="[+-]?[[:digit:]]{2}\.[[:digit:]]+"' &&
     sp3='lon="[+-]?[[:digit:]]{3}\.[[:digit:]]+">' &&
     sed -E -e \
       /"$sp1 $sp2 $sp3"'/ {
         N; N
         s/\n//g
       }' -- 600MB_Datei.gpx
   )


Sortieren nach der vierten Spalte: 


   sort -k 4,4


Messzeitpunkt‐Dubletten entfernen: 


   uniq -f 3


Alles zusammengenommen: 


   (
     sp1='<trkpt' &&
     sp2='lat="[+-]?[[:digit:]]{2}\.[[:digit:]]+"' &&
     sp3='lon="[+-]?[[:digit:]]{3}\.[[:digit:]]+">' &&
     sed -E -e \
       /"$sp1 $sp2 $sp3"'/ {
         N; N
         s/\n//g
       }' -- 600MB_Datei.gpx
   ) |
   sort -k 4,4 |
   uniq -f 3 > eingedampfte_Datei.gpx


Als Shell‐Skript «eindampfen»: 


   #!/bin/sh
   (
     sp1='<trkpt' &&
     sp2='lat="[+-]?[[:digit:]]{2}\.[[:digit:]]+"' &&
     sp3='lon="[+-]?[[:digit:]]{3}\.[[:digit:]]+">' &&
     sed -E -e \
       /"$sp1 $sp2 $sp3"'/ {
         N; N
         s/\n//g
       }'
   ) |
   sort -k 4,4 |
   uniq -f 3


Aufrufen mit 


   eindampfen < 600MB_Datei.gpx > eingedampfte_Datei.gpx


Die eingedampfte Datei enthält die Messpunkte jetzt noch als 
Einzeiler.  Stört das?  Dann müsste man die Zeilen noch 
wiederumbrechen.  Das lässt sich sicher auch mit «sed», «awk» oder 
dem Shell bewerkstelligen.  (Ich mach' mir aber nur dann die Mühe, 
mir das zu überlegen, wenn es nötig ist.) 

[toc] | [prev] | [next] | [standalone]


#187

FromReinhard Zwirner <reinhard.zwirner@t-online.de>
Date2021-04-30 23:14 +0200
Message-ID<if3aa0Ftmc0U1@mid.individual.net>
In reply to#186
Helmut Waitzmann schrieb:
> Reinhard Zwirner <reinhard.zwirner@t-online.de>:
> 
>> für meinen Win10/64pro-PC suche ich ein Programm, das das im
>> Folgenden geschilderte Problem lösen kann:
>>
>> Wenn ich wandere, habe ich als Spielzeug ein Outdoor-GPS von Garmin
>> dabei. Es ist so eingestellt, daß jede Sekunde die aktuelle
>> Position in folgendem Format in einer .gpx-Datei im Ordner
>> "Current" abgespeichert wird:
>>
>> <trkpt lat="xx.xxxxxxxxx" lon="yyy.yyyyyyyyy">
>>        <time>YYYY-MM-DDThh:mm:ssZ</time>
>> </trkpt>
>>
> 
> Also ist jeder Messpunkt ein Dreizeiler. 

Hallo Helmut,

nein, leider nicht. Ich habe die Notation der einzelnen Wegpunkte nur
der Übersichtlichkeit halber so dargesellt. Tatsächlich ist es, wie
ich im Folgenden schrieb, ein (quasi endloser) String ohne jegliche
Lücke bzw. ohne jegichen Zeilenumbruch:
<trkpt lat="xx.xxxxxxxxx"
lon="yyy.yyyyyyyyy"><time>YYYY-MM-DDThh:mm:ssZ</time></trkpt><trkpt
lat="xx.xxxxxxxxx"
lon="yyy.yyyyyyyyy"><time>YYYY-MM-DDThh:mm:ssZ</time></trkpt><trkpt
lat="xx.xxxxxxxxx"
lon="yyy.yyyyyyyyy"><time>YYYY-MM-DDThh:mm:ssZ</time></trkpt>...

Und nun?

Seufzend

Reinhard

[toc] | [prev] | [next] | [standalone]


#189

FromHelmut Waitzmann <nn.throttle@xoxy.net>
Date2021-05-01 16:05 +0200
Message-ID<83czuay2fy.fsf@helmutwaitzmann.news.arcor.de>
In reply to#187
Reinhard Zwirner <reinhard.zwirner@t-online.de>:
>Helmut Waitzmann schrieb:

>> Also ist jeder Messpunkt ein Dreizeiler.  
>>

>nein, leider nicht. Ich habe die Notation der einzelnen Wegpunkte 
>nur der Übersichtlichkeit halber so dargesellt. Tatsächlich ist es, 
>wie ich im Folgenden schrieb, ein (quasi endloser) String ohne 
>jegliche Lücke bzw. ohne jegichen Zeilenumbruch:

><trkpt lat="xx.xxxxxxxxx"
>lon="yyy.yyyyyyyyy"><time>YYYY-MM-DDThh:mm:ssZ</time></trkpt><trkpt
>lat="xx.xxxxxxxxx"
>lon="yyy.yyyyyyyyy"><time>YYYY-MM-DDThh:mm:ssZ</time></trkpt><trkpt
>lat="xx.xxxxxxxxx"
>lon="yyy.yyyyyyyyy"><time>YYYY-MM-DDThh:mm:ssZ</time></trkpt>...
>
>Und nun? 
>

Berichte, ob das Shell‐Kommando 


   nice -n 19 -- sed -E -e '
     /(<\/trkpt>)(.)/ {
       s//\1\n\2/
       P;D
     }
     ' -- 600MB_Datei.gpx > zeilenweise_Datei.gpx

die Datei «600MB_Datei.gpx» in die Datei «zeilenweise_Datei.gpx» 
kopiert, dabei aber nach jedem Datensatz (erkennbar am Text 
«</trkpt>») einen Zeilenwechsel einfügt.  Das wäre dann je ein 
Zeilenvorschub nach 87 Zeichen und bewirkt eine Vergrößerung der 
Datenmenge um 100/87 Prozent. 

Problem:  «sed» arbeitet prinzipiell zeilenweise.  Sollte es so 
implementiert sein, dass es immer eine ganze Zeile einliest, könnte 
eine 600 MB lange Zeile Ärger verursachen. 

[toc] | [prev] | [next] | [standalone]


#191

FromReinhard Zwirner <reinhard.zwirner@t-online.de>
Date2021-05-01 17:22 +0200
Message-ID<if5a14Far1aU1@mid.individual.net>
In reply to#189
Helmut Waitzmann schrieb:

[...]
Hallo Helmut,

danke für all Deine Bemühungen. Aber es war verlorene Liebesmüh': ich
habe keine Ahnung, wie ich mit Deinem Programm umgehen soll :-(!
Enriks Hinweis, es mal mit GPSBabel zu versuchen, hat zumindest den
Erfolg gehabt,daß der Endlosstring in diskrete Trackpunkte zerlegt wurde.

Im Augenblick suche ich mit Notepad++ jeweils den ersten Trackpunkt
der "Sammlung" für die folgende Sekunde und lösche bis auf den ersten
alle Trackpunke für die aktuelle Sekunde usw. Mühsam, aber klappt.

Ciao

Reinhard

[toc] | [prev] | [next] | [standalone]


#188

FromEnrik Berkhan <Enrik.Berkhan@inka.de>
Date2021-04-30 21:30 +0000
Message-ID<s6hsu3$bsp$1@starfleet.inka.de>
In reply to#185
Reinhard Zwirner <reinhard.zwirner@t-online.de> wrote:
> Ich suche jetzt ein Programm, das diese Datei durchflöht und außer
> dem für jede Sekunde gespeicherten ersten Trackpunkt alle anderen für
> diese Sekunde gespeicherten Trackpunktdaten löscht. Gibt's sowas? Ich
> könnte die vorhandene Datei so vorbereiten, daß sie nur die im o. g.
> Format gespeicherten Trackpunkte enthält und sonst nichts.

Ob es nun genau das kann, weiß ich nicht. Aber sieh dir mal `gpsbabel'
an.

Viele Grüße,
Enrik

[toc] | [prev] | [next] | [standalone]


#190

FromReinhard Zwirner <reinhard.zwirner@t-online.de>
Date2021-05-01 16:49 +0200
Message-ID<if583pFahbuU1@mid.individual.net>
In reply to#188
Enrik Berkhan schrieb:

[...]
> Ob es nun genau das kann, weiß ich nicht. Aber sieh dir mal `gpsbabel'
> an.

Hallo Enrik,

konnte es leider nicht.

Aber es konnte was anderes: den Endlosstring aufteilen, so daß jetzt
jeder Trackpunkt vier Zeilen belegt. Immerhin ein Anfang ...

Es dankt auf jeden Fall

Reinhard

[toc] | [prev] | [next] | [standalone]


#192

FromWolf gang P u f f e <remail@gmx.com>
Date2021-05-02 14:15 +0200
Message-ID<s6m536$3he$1@dont-email.me>
In reply to#185
Am 30.04.2021 um 14:04 schrieb Reinhard Zwirner:
> Liebe Experten,
>
> für meinen Win10/64pro-PC suche ich ein Programm, das das im
> Folgenden geschilderte Problem lösen kann:
>
> Wenn ich wandere, habe ich als Spielzeug ein Outdoor-GPS von Garmin
> dabei. Es ist so eingestellt, daß jede Sekunde die aktuelle Position
> in folgendem Format in einer .gpx-Datei im Ordner "Current"
> abgespeichert wird:
>
> <trkpt lat="xx.xxxxxxxxx" lon="yyy.yyyyyyyyy">
>          <time>YYYY-MM-DDThh:mm:ssZ</time>
> </trkpt>
>
> Hinzufügen möchte ich, daß die Speicherung als String ohne jegliche
> Strukturierung erfolgt.
>
> Wenn die Wanderung länger dauert und ca. 3000 Trackpunkte gespeichert
> wurden, werden die in einer Datei zusammengefaßt, die in den Ordner
> "Archive" verschoben wird. Diese Häppchen-Dateien sind ca. 300 kB
> groß. Gleichzeitig beginnt eine neue "Trackpunktsammlung" im Ordner
> "Current".
>
> Nun ist beim letzten Mal irgendwann irgendwo irgendwie ein Malheur
> passiert. Jedenfalls war eine der Dateien aus dem "Archive"-Ordner
> sagenhafte 600 MB groß! Eine Analyse ergab, daß "Dateiheader" samt
> "Dateiformat" in Ordnung und alle Trackpunke gespeichert sind, aber
> jeder Trackpunkt mehrere 1000 Mal!
>
> Ich suche jetzt ein Programm, das diese Datei durchflöht und außer
> dem für jede Sekunde gespeicherten ersten Trackpunkt alle anderen für
> diese Sekunde gespeicherten Trackpunktdaten löscht. Gibt's sowas? Ich
> könnte die vorhandene Datei so vorbereiten, daß sie nur die im o. g.
> Format gespeicherten Trackpunkte enthält und sonst nichts.
>
> Für sachdienliche Hinweise dankt im voraus
> freundlich grüßend

Eine Aufgabe, die man im guten alten Basic lösen kann.
Vor 20 Jahren war ich da mal fit, aber heute...?
Da kann ich nicht mehr helfen, das ich mich grundsätzlich in die
Datei- und Stringverarbeitung von Basic wieder einarbeiten müsste.

Aber mal ein anderer Hinweis.
Wenn ich im Etrex einen Track mitlaufen lasse, dann ist der als
aktueller Track sehr umfangreich.
Wenn ich es richtig in Erinnerung habe, sind da 
Datum/Zeit/Richtung/Geschwindikkeit...usw für jede Sekunde enthalten.
Wenn ich diesen Track dann Archiviere im Etrex, also speichere unter
irgend einem Namen, dann werden dort viele Informationen
(Richtung/Geschwindigkeit/Zeitpunkt) entfernt und auch die Anzahl der
Trackpoints wird deutlich spürbar ausgedünnt.
Nicht dass du den "aktuellen Track" bzw. eine Teildatei aus dem Gerät
geholt hast, wo der deutlich höhere Informationsgehalt gespeichert ist.
Erst durch das Speichern der aktuellen Aufzeichnung wird die Datenmenge
vom Gerät selbst reduziert.

[toc] | [prev] | [next] | [standalone]


#194

FromReinhard Zwirner <reinhard.zwirner@t-online.de>
Date2021-05-02 14:44 +0200
Message-ID<if7l52FonejU1@mid.individual.net>
In reply to#192
Wolf gang P u f f e schrieb:

[...]
> Aber mal ein anderer Hinweis.
> Wenn ich im Etrex einen Track mitlaufen lasse, dann ist der als
> aktueller Track sehr umfangreich.
> Wenn ich es richtig in Erinnerung habe, sind da
> Datum/Zeit/Richtung/Geschwindikkeit...usw für jede Sekunde enthalten.
> Wenn ich diesen Track dann Archiviere im Etrex, also speichere unter
> irgend einem Namen, dann werden dort viele Informationen
> (Richtung/Geschwindigkeit/Zeitpunkt) entfernt und auch die Anzahl der
> Trackpoints wird deutlich spürbar ausgedünnt.
> Nicht dass du den "aktuellen Track" bzw. eine Teildatei aus dem Gerät
> geholt hast, wo der deutlich höhere Informationsgehalt gespeichert ist.
> Erst durch das Speichern der aktuellen Aufzeichnung wird die Datenmenge
> vom Gerät selbst reduziert.

Hallo Wolfgang,

danke für den Hinweis. Aber die Speicherung der Teilstrecken im
Archive-Ordner meines 64sx erfolgt absolut automatisch! Und in der
aufgeblähten Datei sind keinerlei zusätzliche Infos enthalten,
sondern - zum Glück _NUR_ in dieser einen Teilstrecken-Datei - die
einzelnen Trackpunkte jeweils ein paar tausend Mal :-( ...

Ciao

Reinhard

[toc] | [prev] | [next] | [standalone]


#193

From"Wendelin Uez" <wuez@online.de>
Date2021-05-02 14:31 +0200
Message-ID<s6m645$a9t$1@dont-email.me>
In reply to#185
Die Daten liegen im sog. XML-Format vor, wobei nicht sicher ist, ob zwischen 
den Datensätzen ein Trennzeichen existiert. Das ist das eigentliche Problem.

Ziel ist es, eine Datei zu erhalten, in der pro Zeile genau ein Datensatz 
steht. Ein Datensatz beginnt mit "<trkp" und endet mit "</trkp>".

Kann man eine solche Datei in ein Tabellenkalkulationsprogramm einlesen, 
auch wenn nur die gesamte Zeile in der ersten Spalte steht, dann können die 
heutigen Tabellenprogramme doppelte Zeilen mit eingebauten Mitteln entfernen 
und es bleiben nur die ersten Zeilen übrig.



Ich würde so vorgehen:

- Datei mit Dateiendung .xml versehen

- diese versuchen OHNE Trennzeichen zu spezifizieren einzulesen (also nicht 
Tab, Komma, Semikolon etc. angeben, nur reinen Text)

- bingo, wenn alles zeilenweise angezeigt wird, dann Doubletten löschen und 
fertig



- falls nicht, erstmal mit allen anderen verfügbaren Text- und 
Kalkulationsprogrammen versuchen mit dem Ziel, eine zeilenweise Anzeigei zu 
erzeugen


- falls auch das alles nicht geht, das geht garantiert:
unter heise.de/software den Notepad++ downloaden (opensource,free), damit 
Datei einlesen und "</trkp>" ersetzen durch "</trkp>/nl" - das /nl steht für 
new line und fügt einen Zeilenvorschub ein.

Außerdem kann Notepad++ auch doppelte Zeilen entfernen.

That's it. 

[toc] | [prev] | [next] | [standalone]


#195

FromReinhard Zwirner <reinhard.zwirner@t-online.de>
Date2021-05-02 15:38 +0200
Message-ID<if7oapFpaksU1@mid.individual.net>
In reply to#193
Wendelin Uez schrieb:
> Die Daten liegen im sog. XML-Format vor, wobei nicht sicher ist, ob
> zwischen den Datensätzen ein Trennzeichen existiert. Das ist das
> eigentliche Problem.
> 
> Ziel ist es, eine Datei zu erhalten, in der pro Zeile genau ein
> Datensatz steht. Ein Datensatz beginnt mit "<trkp" und endet mit
> "</trkp>".
> 
> Kann man eine solche Datei in ein Tabellenkalkulationsprogramm
> einlesen, auch wenn nur die gesamte Zeile in der ersten Spalte steht,
> dann können die heutigen Tabellenprogramme doppelte Zeilen mit
> eingebauten Mitteln entfernen und es bleiben nur die ersten Zeilen
> übrig.
> 
> 
> 
> Ich würde so vorgehen:
> 
> - Datei mit Dateiendung .xml versehen
> 
> - diese versuchen OHNE Trennzeichen zu spezifizieren einzulesen (also
> nicht Tab, Komma, Semikolon etc. angeben, nur reinen Text)
> 
> - bingo, wenn alles zeilenweise angezeigt wird, dann Doubletten
> löschen und fertig
> 
> 
> 
> - falls nicht, erstmal mit allen anderen verfügbaren Text- und
> Kalkulationsprogrammen versuchen mit dem Ziel, eine zeilenweise
> Anzeigei zu erzeugen
> 
> 
> - falls auch das alles nicht geht, das geht garantiert:
> unter heise.de/software den Notepad++ downloaden (opensource,free),
> damit Datei einlesen und "</trkp>" ersetzen durch "</trkp>/nl" - das
> /nl steht für new line und fügt einen Zeilenvorschub ein.
> 
> Außerdem kann Notepad++ auch doppelte Zeilen entfernen.
> 
> That's it.

Hi,

mittlerweile hat GPSBabel dafür gesorgt, daß die Datei nicht mehr ein
"Endlos-String" ist, sondern die einzelnen Trackpunkte jeweils
vierzeilig untereinander stehen (sorry für den Irrtum in meinem OP!):

<trkpt lat="xx.xxxxxxxxx" lon="yyy.yyyyyyyyy">
  <ele>mmm.mmm</ele>
  <time>YYYY-MM-DDThh:mm:ssZ</time>
</trkpt>

Derzeit bin ich auch tatsächlich mit Notepad++ zugange, kenne aber
leider nicht so die Feinheiten. Da hat die Datei jetzt übrinx knapp
23,4 Mi. Zeilen!

Am liebsten würde ich, nachdem ich im jeweils 1. "neuzeitlichen"
Trackpunkt die Sekundenangabe geändert habe, im Menü
Suchen -> Suchen, Reiter "Ersetzen", _sowas_wie_

<trkpt*.*><.*mm:ssZ></trkpt>
             ^^^^^
(Zeitpunkt, für den die jeweils überflüssigen Trackpunkte gelöscht
werden sollen)

eingeben und durch

<"leeres Feld">

ersetzen lassen. Aber zum einen weiß ich nicht, was ich da genau
eingeben müßte, zum anderen hätte ich dann riesige Lücken zwischen
den einzelnen Trackpunkten, die dann auch noch zu löschen wären.

Seufzend

Reinhard (kein Programmierer, nur Anwender, aber das auch nur,
solange es nicht zu kompliziert wird ...)

[toc] | [prev] | [next] | [standalone]


#196

From"Wendelin Uez" <wuez@online.de>
Date2021-05-03 20:28 +0200
Message-ID<s6pfi2$4v8$2@dont-email.me>
In reply to#195
> mittlerweile hat GPSBabel dafür gesorgt, daß die Datei nicht mehr ein
> "Endlos-String" ist, sondern die einzelnen Trackpunkte jeweils
> vierzeilig untereinander stehen (sorry für den Irrtum in meinem OP!):
>
> <trkpt lat="xx.xxxxxxxxx" lon="yyy.yyyyyyyyy">
>  <ele>mmm.mmm</ele>
>  <time>YYYY-MM-DDThh:mm:ssZ</time>
> </trkpt>

Das siejt doch gut aus.

Nur zur Sicherheit, sehe ich das richtg, daß jetzt...
1. ein Datensatz somit *IMMER* genau 4 Zeilen umfaßt und
2. das Problem darin besteht, daß *aufeinanderfolgende* Datensätze identisch 
sind und aussortiert werden sollten?

Dann könnte man ein kleines VB-Skript schreiben, welches jeweils vier Zeilen 
einliest und diese nur in die Ausgabedatei schreibt, wenn sich der 
Viererblock vom vorhergehenden unterscheidet.

Das Skript müsste dann nur die vier Zeilen vergleichen und bräuchte 
ansonsten keine Daten extrahieren, der Code wäre also trivial. 

[toc] | [prev] | [next] | [standalone]


#197

FromReinhard Zwirner <reinhard.zwirner@t-online.de>
Date2021-05-04 01:27 +0200
Message-ID<ifbf6kFh116U1@mid.individual.net>
In reply to#196
Wendelin Uez schrieb:

[...]
> Nur zur Sicherheit, sehe ich das richtg, daß jetzt...
> 1. ein Datensatz somit *IMMER* genau 4 Zeilen umfaßt und

Jau!

> 2. das Problem darin besteht, daß *aufeinanderfolgende* Datensätze
> identisch sind und ...

... bis auf den jeweils ersten dieser identischen Datensätze ...

>                ... aussortiert werden sollten?

> Dann könnte man ein kleines VB-Skript schreiben, welches jeweils vier
> Zeilen einliest und diese nur in die Ausgabedatei schreibt, wenn sich
> der Viererblock vom vorhergehenden unterscheidet.

Genau! Aber was ist ein VB-Skript?

> Das Skript müsste dann nur die vier Zeilen vergleichen und bräuchte
> ansonsten keine Daten extrahieren, der Code wäre also trivial.

Für Experten schon, aber nicht für mich ... <seufz>. Hier hilft
Selbsterkenntnis leider nicht weiter.

Ciao

Reinhard

[toc] | [prev] | [next] | [standalone]


#198

FromThomas Hochstein <thh@thh.name>
Date2021-05-04 07:58 +0200
Message-ID<dcsm.20210504075858.1316@scatha.ancalagon.de>
In reply to#197
Reinhard Zwirner schrieb:

> Aber was ist ein VB-Skript?

Ein in der Sprache Visual Basic gehaltenes Script.

(Das funktioniert natürlich auch in jeder anderen Sprache, in manchen
konzeptuell einfacher als in anderen.)

-thh

[toc] | [prev] | [next] | [standalone]


#199

FromReinhard Zwirner <reinhard.zwirner@t-online.de>
Date2021-05-04 11:48 +0200
Message-ID<ifcjifFni4dU1@mid.individual.net>
In reply to#198
Thomas Hochstein schrieb:
> Reinhard Zwirner schrieb:
> 
>> Aber was ist ein VB-Skript?
> 
> Ein in der Sprache Visual Basic gehaltenes Script.

Vielen Dank für die Aufklärung. Wieder was, wovon ich keine Ahnung
habe ;-( ...

Aber was anderes: Ich habe jetzt herausgefunden, wie ich in Notepad++
die "Duplikate" ohne größeren Aufwand löschen kann. Dabei erhalte ich
sogar die Info, wie viele Zeilen gelöscht wurden. Leider hat das
Ganze einen Nachteil - ich muß anschließend die leeren Zeilen (bisher
max. ca. 25000) löschen.

Deshalb die Frage: Kann man in Notepad++ beim Ersetzen irgendwie
erreichen, daß nicht nur der Zeileninhalt, sondern auch die Zeile
gleich mitgelöscht wird?

Auch für diesbezügliche Hinweise dankt im voraus

Reinhard

[toc] | [prev] | [next] | [standalone]


#200

From"Wendelin Uez" <wuez@online.de>
Date2021-05-04 20:13 +0200
Message-ID<s6s2vu$p19$1@dont-email.me>
In reply to#197
> Genau! Aber was ist ein VB-Skript?

Ein Visual-Basic-Skript. Diese Programmiersprache ist in Windows enthalten.

Anbei ein einfaches Skript, das die genannte Aufgabe löst:

- kopiere den untenstehenden Quellcode in den Windows-Editor
- speichere ihn in einem beliebigen leeren Ordner ab unter dem Namen 
DUPLORAUS.vbs
- kopiere eine Kopie der Umwandlungsdatei als EINGABE.txt in denselben 
Ordner
- Doppelklick im Explorer auf DUPLORAUS.vbs startet das Skript
- nach dem Durchlauf kommt die Meldung "fertig" und die unterschiedlichen 
Viereblöcke stehen in der Datei ausgabe.txt im selben Ordner.

Wichtig:
- die Eingabedatei muß eine durch 4 teilbare Zahl an Zeilen enthalten, sonst 
Fehler
- also keine Leerzeile am Ende
- die Ausgabedatei AUSGABE.txt darf nicht existieren, sonst wird sie 
erweitert, nicht überschrieben

Der Code ist selbsterklärend, es werden immer vier Zeilen gelesen, 
verglichen, und falls unterschiedlich geschrieben.

good luck!
wuez



Un hier der Skript-Code:

-------------------schnipp -------------------------------------------
'*** Hinweis:
' - Eingabedatei MUSS eine durch 4 teilbare Anzahl Zeilen enthalten!!!
' - Ausgabedatei darf noch nicht existieren, sonst wird Ausgabe angehängt

'*** Deklarationen
CONST FOR_APPENDING = 8

'*** Ein- und Ausgabedateien
INPUTFILE = "eingabe.txt"
OUTPUTFILE = "ausgabe.txt"

'*** Dateien öffnen
Set objFSO = CreateObject("Scripting.FileSystemObject")
Set objFileINP = objFSO.OpenTextFile (INPUTFILE)
Set objFileOUT = objFSO.OpenTextFile (OUTPUTFILE,FOR_APPENDING,True)

'*** Eingabedatei bis zum Ende lesen
WHILE NOT objFileINP.AtEndOfStream

'neuen Viererblock lesen
 N1 = obJFileINP.ReadLine
 N2 = obJFileINP.ReadLine
 N3 = obJFileINP.ReadLine
 N4 = obJFileINP.ReadLine

'vergleichen mit altem
 NEUGLEICHALT = N1=A1 AND N2=A2 AND N3=A3 AND N4=A4
 IF NOT NEUGLEICHALT THEN

  'unterschiedlichen Viererblock schreiben
   objFileOUT.WriteLine N1
   objFileOUT.WriteLine N2
   objFileOUT.WriteLine N3
   objFileOUT.WriteLine N4

   'alt = neu
    A1 = N1
    A2 = N2
    A3 = N3
    A4 = N4

    END IF
WEND

objFileINP.Close
objFileOUT.Close

MSGBOX "fertig"
-------------------schnapp ------------------------------------------- 

[toc] | [prev] | [next] | [standalone]


#201

FromReinhard Zwirner <reinhard.zwirner@t-online.de>
Date2021-05-04 22:28 +0200
Message-ID<ifdp3tF8h7U1@mid.individual.net>
In reply to#200
Wendelin Uez schrieb:

[...]
> Der Code ist selbsterklärend, es werden immer vier Zeilen gelesen,
> verglichen, und falls unterschiedlich geschrieben.
> 
> good luck!

Hallo Wendelin,

hurra! Es hat auf Anhieb geklappt! Vielen, vielen Dank! Wie kann ich
das wiedergutmachen?

Fragt strahlend

Reinhard

[toc] | [prev] | [next] | [standalone]


#202

From"Wendelin Uez" <wuez@online.de>
Date2021-05-05 14:01 +0200
Message-ID<s6u46h$71o$1@dont-email.me>
In reply to#201
> Es hat auf Anhieb geklappt
Na wieso auch nicht? Kommt ja von mir :-)

> Wie kann ich das wiedergutmachen?
Halte die Newsgroup am Leben und steuere ggfs. auch mal was bei.

wuez

[toc] | [prev] | [standalone]


Back to top | Article view | de.comp.software.misc


csiph-web