Bearbeiten großer Datenmenge in einem Editor

OP #3896294
Lesenswert?

Hola,

ich habe ein Problem mit einem großen Haufen an Datenpunkten die gerne 
darstellen möchte.... Ich hoffe darauf dass das für Leute die sich mit 
so etwas auskennen nur ein kleines Problem darstellt und ihr mir dabei 
helfen könnt! Ich kenne mich leider mit Datenverarbeitungsprogrammen 
nicht wirklich aus.

Hintergrund: Ich möchte gerne meine Messdaten in einer 3D Oberfläche 
darstellen. Ich habe schon festgestellt dass das mit den >12 Mil. 
Datenpunkten mit Excel absolut nicht möglich ist. Mir wurde daher zu 
Gnuplot geraten. Derjenige hat mir damit auch etwas geholfen, hat aber 
selber noch nie 3D Oberflächen dargestellt. Es geht auch, wenn ich nur 
alle 30 Datenpunkte nehme. Um das in der Darstellung zu machen die ich 
brauche/möchte, muss ich die Daten für Gnuplot allerdings etwas 
bearbeiten. Und zwar sind meine Datenpunkte so angeordnet:
x         y          z
1,29      0          1,343
2,58      0          1,452
3,87      0          0,784
.....
es werden also zuerst die x durchgezählt während y konstant bleibt. wenn 
x beim letzten angekommen ist (15687 oder so) kommt der erste y wert 
(1,29) und das ganze geht bei x von vorne los und so weiter.
Jetzt mein Problem: Ich muss verschiedene Blöcke für Gnuplot erzeugen, 
die ich mit einer Leerzeile voneinander trenne, also immer wenn bei y 
eine neue Zahl anfängt eine Leerzeile einfügen.
Ich hab mir schon ein andere Texteditor Programm besorgt (Vin cream oder 
so), womit ich das händisch machen könnte.... aber das ist händisch echt 
ne Menge Arbeit und ich muss das leider nicht nur bei einer Datei 
machen....

So, lange Rede, worauf ich hinaus will...
Gibt es ein Programm dem ich sagen kann er soll immer wenn bei x 0,00 
steht eine Leerzeile davor einfügen???

Viele Grüße,
Sonja

P.S.: Ach ja, ich hab Windows 8 falls das wichtig für mein Problem 
ist....
OP #3896347
Lesenswert?

Hola,
schon mal vielen Dank für die schnellen Antworten!
Also, Scriptsprachen kann ich leider keine... :(
@ Peter Xuang Dateityp ist eine dat-Datei.
@ A.K. Mit sed meinst du diesen stream-editor von GNU? Werde ich mal 
ausprobieren, melde mich dann wenn es klappt oder nicht ;)

Viele Grüße,
Sonja
OP #3896620
Lesenswert?

Guten Morgen,

leider scheint es für SED keine 64bit Version zu geben (habe vielleicht 
vergessen zu erwähnen dass ich WIN 8 64bit habe....sorry!). Die 32bit 
Version funktioniert leider nicht bei mir, habe es mit allen möglichen 
Kompabilititäseinstellungen versucht, als Admin und so, aber es öffnet 
sich nur kurz ein DOS Eingabefenster welches dann aber schnell wieder 
verschwindet und das wars....
Wenn aber jemand noch Ideen hat wie ich das Programm zum laufen kriege 
dann immer her damit ;)
Vielleicht hat sonst noch jemand eine Alternatividee zur Lösung meines 
Problems???

Viele Grüße,
Sonja
#3896625
Lesenswert?

Sonja O. schrieb:
> aber es öffnet
> sich nur kurz ein DOS Eingabefenster welches dann aber schnell wieder
> verschwindet und das wars....

Genau das soll es auch. Das ist ein Kommandozeilenprogramm. Ich dachte 
du suchst ein Programm, um automatisiert Textdateien zu bearbeiten. 
Keinen interaktiven Editor für Monsterfiles.

Herrje... Wenn man nicht drauf klicken kann und dann ein quietschbunte 
GUI mit Wizard hochpoppt, dann sind die Leute heute verloren. ;-)

Mit 32/64-Bit hat das nichts zu tun.

PS: In Windows CMD.EXE (Win7 64bit) geht '' nicht, also
 sed -e "/^0,00 /i\ " infile >outfile
#3896639
Lesenswert?

Schreib den obigen Text in ein File
  edit.cmd
rein, mit angepassten vollständigen Pfaden für die Files. In die zweite 
Zeile schreibst du übergangsweise
  pause
damit du was siehst. Und das lässt sich dann anklicken.

Interaktiv geht das, in dem du
  CMD.EXE
startest, und die Zeile schlicht eintippst.
OP #3896658
Lesenswert?

Hmmm, okay, ich weiß es ist anstrengend wenn jemand so gar keine Ahnung 
davon hat wie ich und dann mit sowas um die Ecke kommt.
Ich hab das grade probiert, hab halt die Eingabeaufforderung gestartet, 
cmd.exe eingegeben, dann den Befehl oben, also

"/^0,00 /i\ " S:\L.dat >S:\L bearbeitet.dat

Dann sagt er mir er kann den angegebenen Pfad nicht finden. Ich hab die 
Datei schon verlegt und den Dateinamen gekürzt, sodass ich nicht immer 3 
Zeilen für den Pfad eingeben muss, hab es mit und ohne Endung .dat 
versucht, aber nichts geht. Was mache ich denn schon wieder falsch?
#3896666
Lesenswert?

Sonja O. schrieb:
> "/^0,00 /i\ " S:\L.dat >S:\L bearbeitet.dat

sed "/^0,00 /i\ " S:\L.dat >S:\L_bearbeitet.dat

Das zu startende Programm wegzulassen ist unhöflich. Wenn es nicht im 
Pfad liegt - ich weiss nicht wohin du es installiert hast - dann muss 
auch da der Pfad dran, also beispielhaft
1
 c:\meine-programme\gnuwin32\sed "/^0,00 /i\ " S:\L.dat >S:\L_bearbeitet.dat

Leerzeichen in Filenamen sind in der Kommandozeile keine gute Idee. Es 
geht schon, mit "..." drumrum, aber einfacher ist es ohne sie.
#3896711
Lesenswert?

Markus schrieb:
> Daher auch die Fehlermeldung "Pfad nicht gefunden..."

In der Kommandozeile
1
"/^0,00 /i\ " S:\L.dat >S:\L bearbeitet.dat
sind gleich 2 Dinge, die trotz korrekter Installation nicht gefunden 
werden können. So ist
 "/^0,00 /i\ "
kein Programm, mit dem CMD.EXE etwas anfangen könnte (die Angabe des 
Programms "sed" fehlt), und ein File
 bearbeitet.dat
existiert sehr wahrscheinlich auch nicht (Leerzeichen im Filenamen).

PS: Wenn sich der Kram nach
  C:\Program Files (x86)\GnuWin32
installiert und nicht im Pfad liegen sollte, dann muss es
  "C:\Program Files (x86)\GnuWin32\sed" ...
heissen, weil Microsoft sich in unendlicher Weisheit eines Tages 
entschlosssen hatte, zur Freude aller Kommandozeilenliebhaber 
ausgerechnet da hinein ein Leerzeichen zu setzen.
OP #3896729
Lesenswert?

Also ich habe meine obigen Fehler korrigiert und er startet auch 
tatsächlich sed. macht irgendwas und erzeugt mir meine outfile. Wenn ich 
diese mit dem Editor öffne ist sie allerdings leer.....

A. K. schrieb:
> PS: Wenn sich der Kram nach
>   C:\Program Files (x86)\GnuWin32
> installiert und nicht im Pfad liegen sollte, dann muss es
>   "C:\Program Files (x86)\GnuWin32\sed" ...
> heissen, weil Microsoft sich in unendlicher Weisheit eines Tages
> entschlosssen hatte, zur Freude aller Kommandozeilenliebhaber
> ausgerechnet da hinein ein Leerzeichen zu setzen.


Bei mir liegt es natürlich auch dort... geht scheinbar auch wenn man nur 
das "program files (x86)" in Gänsefüßchen setzt!
#3896745
Lesenswert?

A. K. schrieb:
> sed -e '/^0,00 /i\ ' infile >outfile

Das wird aber nicht

> immer wenn bei y
> eine neue Zahl anfängt eine Leerzeile einfügen.

sondern nur eine Leerzeile einfügen wenn der X gleich 0,00 ist.

Dann mal aus der Hüfte, in Python3:
1
import sys
2

3
prev=["", "", ""]
4

5
with open("test.dat") as f:
6
  for line in f:
7
    words = line.split()
8
    if words != None and len(words) > 2:
9
      if words[1] != prev[1]:
10
        sys.stdout.write("\n")
11
    prev = words
12
    sys.stdout.write(line)
OP #3896752
Lesenswert?

Hola,
ich glaube ich habe die Lösung. Ein Kollege hat mich darauf 
gebracht...warum einfach wenns auch kompliziert geht ^^
Ich habe mir ein vernünftiges Editor Programm geladen (jEdit) und die 
gute alte Suchen Ersetzen Funktion genutzt. Ich komme mir ehrlich gesagt 
ein bisschen blöde vor, ich hatte das damit schon mal versucht war aber 
an der Leerzeile gescheitert weil ich, wenn ich im  "suchen"-Feld die 
Return Taste betätige, ja den befehl bestätige und nicht eine neue Zeile 
beginne. Ich kann aber ja einfach vorher schon den Bereich mit der 
Leerzeile , bzw mit dem Zeilenwechsel markieren, wenn ihr versteht was 
ich zu sagen versuche :)
Viele Grüße und ganz lieben Dank für eure Hilfe,
Sonja

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren