• Willkommen im Linux Club - dem deutschsprachigen Supportforum für GNU/Linux. Registriere dich kostenlos, um alle Inhalte zu sehen und Fragen zu stellen.

Datendatei in GNUPlot verarbeiten

ledi001

Newbie
Hallo,

ich möchte mit dem Programm GNUplot Messdaten grafisch anzeigen lassen. Die Daten sende ich von meinem Mikrocontroller über die UART-Schnittstelle und einem UART/USB-Wandler an den PC.
Am PC (Windows 7) empfange ich die Daten mit HTerm und speichere die Werte inkl. timestamp als .txt Datei ab, welche ich dann in eine .dat Datei für GNUPlot umwandle.

In meiner Datendatei werden die Werte wie folgt gespeichert:

11:14:59.973:
000
11:15:00.972:
001
11:15:01.972:
002
11:15:02.971:
003
11:15:03.970:
004
11:15:04.970:
005

In der 1. Zeile ist der timestamp
In der 2. Zeile der Messwert
Für GNUPlot bräuchte ich die Daten aber in 2 Spalten. Wie kann ich die Daten in der Datendatei spaltenweise ordnen?
 

RME

Advanced Hacker
Hallo,

Ein 'sed' script:
Code:
#! /usr/bin/sh

input="$1"

echo --- input = $input ---

sed -i '/^[0-9][0-9]*\o072[0-9].*/{
N
s/\(.*\)\o012\([0-9].*\)/\1 \2/
}
' $input

# end of script
copy/paste in eine Text-Datei, gib dieser einen Namen, z.B. "join_lines" und mach diese dann ausführbar:
Code:
chmod 755 join-lines
Code:
> cat data.txt
11:14:59.973:
000
11:15:00.972:
001
11:15:01.972:
002
11:15:02.971:
003
11:15:03.970:
004
11:15:04.970:
005
Code:
join_lines data.txt
Code:
> cat data.txt
11:14:59.973: 000
11:15:00.972: 001
11:15:01.972: 002
11:15:02.971: 003
11:15:03.970: 004
11:15:04.970: 005
Wenn Du zwischen dem "timestamp" und dem "Messwert" etwas anderes als ein 'space' haben möchtest, dann die Zeile:
Code:
s/\(.*\)\o012\([0-9].*\)/\1 \2/
zwischen "\1" und "\2" entsprechend editieren. Beispiele:
Code:
s/\(.*\)\o012\([0-9].*\)/\1  \2/               (zwei 'spaces')
s/\(.*\)\o012\([0-9].*\)/\1\o011\2/            (ein 'tab')
s/\(.*\)\o012\([0-9].*\)/\1 textstring \2/     (ein Text)
Gruss,
Roland
 
Oben