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....
was für scriptsprachen kannst du ? zum konvertieren kann man zB node.js, python, php etc. nehmen ..
sed -e '/^0,00 /i\ ' infile >outfile http://gnuwin32.sourceforge.net/packages/sed.htm
:
Bearbeitet durch User
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
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
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
:
Bearbeitet durch User
Hey, danke erst mal für die schnelle Anwort. Aber wenn das DOS Fenster doch direkt wieder verschwindet, wo soll ich denn dann die Kommandos eingeben? VG, Sonja
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.
:
Bearbeitet durch User
Sonja O. schrieb: > Aber wenn das DOS Fenster doch > direkt wieder verschwindet, wo soll ich denn dann die Kommandos > eingeben? Du musst selbst ein DOS-Fenster (Windows-Eingabeaufforderung) öffnen und darin das Kommando eingeben.
Mehr als 12 Mio Datenpunke bearbeiten wollen, aber keine Ahnung von Kommandozeile... Geh Schule
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?
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.
:
Bearbeitet durch User
Also wenn die Installation schon nicht funktioniert hat kann auch der Rest nicht funktionieren. Daher auch die Fehlermeldung "Pfad nicht gefunden..."
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.
:
Bearbeitet durch User
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!
Diese Linuxfrickelprogramme machen nur Probleme, ich wuerde es anders loesen.
Chefentwickler schrieb: > Diese Linuxfrickelprogramme machen nur Probleme, ich wuerde es anders > loesen. Dann tu es. Und schreib es hier rein. Letzthin fand jemand hinter einem Schrank einen alten Entwickler. Aber der war leider eine Flasche, daher auch als Chef nicht zu gebrauchen.
:
Bearbeitet durch User
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) |
Eric B. schrieb: > sondern nur eine Leerzeile einfügen wenn der X gleich 0,00 ist. Forderung: " er soll immer wenn bei x 0,00 steht eine Leerzeile davor einfügen?"
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
A. K. schrieb: > Eric B. schrieb: >> sondern nur eine Leerzeile einfügen wenn der X gleich 0,00 ist. > > Forderung: " er soll immer wenn bei x 0,00 steht eine Leerzeile davor > einfügen?" Ja genau. Ich hoffe ich hatte mich nicht unklar ausgedrückt....
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.