Forum: PC Hard- und Software Bearbeiten großer Datenmenge in einem Editor


von Sonja O. (sonja_o)


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....

von Test (Gast)


Lesenswert?

was für scriptsprachen kannst du ? zum konvertieren kann man zB node.js, 
python, php etc. nehmen ..

von Peter X. (peter_x)


Lesenswert?

Welches Format hat dein Datenfile? SQL?

von (prx) A. K. (prx)


Lesenswert?

sed -e '/^0,00 /i\ ' infile >outfile
http://gnuwin32.sourceforge.net/packages/sed.htm

: Bearbeitet durch User
von Sonja O. (sonja_o)


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

von Sonja O. (sonja_o)


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

von (prx) A. K. (prx)


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

: Bearbeitet durch User
von Sonja O. (sonja_o)


Lesenswert?

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

von (prx) A. K. (prx)


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.

: Bearbeitet durch User
von Andreas S. (Firma: Schweigstill IT) (schweigstill) Benutzerseite


Lesenswert?

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.

von Rene S. (Firma: BfEHS) (rschube)


Lesenswert?

Mehr als 12 Mio Datenpunke bearbeiten wollen, aber keine Ahnung von 
Kommandozeile...

Geh Schule

von Sonja O. (sonja_o)


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?

von (prx) A. K. (prx)


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.

: Bearbeitet durch User
von Markus (Gast)


Lesenswert?

Also wenn die Installation schon nicht funktioniert hat kann auch der 
Rest nicht funktionieren.
Daher auch die Fehlermeldung "Pfad nicht gefunden..."

von (prx) A. K. (prx)


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.

: Bearbeitet durch User
von Sonja O. (sonja_o)


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!

von Chefentwickler (Gast)


Lesenswert?

Diese Linuxfrickelprogramme machen nur Probleme, ich wuerde es anders 
loesen.

von (prx) A. K. (prx)


Lesenswert?

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
von Eric B. (beric)


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)

von (prx) A. K. (prx)


Lesenswert?

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?"

von Sonja O. (sonja_o)


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

von Sonja O. (sonja_o)


Lesenswert?

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
Noch kein Account? Hier anmelden.