Salut
ich habe ein Textfile, in dem 3 verschiedene Messwerte (Strom = I, Spannung = U, Frequenz= F) wie folgt (mit CR/LF am Ende) abgelegt sind:
I <wert> <timestamp>
F <wert> <timestamp>
U <wert> <timestamp>
Die Zeilen kommen über eine serielle Schnittstelle und werden in eine Datei geschrieben. Die Reihenfolge der Zeilen (I, U, F) ist beliebig, da sie mit verschiedenen Abtastraten gemessen werden.
Ich möchte nun die Datei mit den vielen I, F und U Zeilen auseinander nehmen und 3 Files erstellen: eines mit allen Zeilen die mit I beginnen, ein File für alle Zeilen mit F usw.
Ich könnte das in C programmieren, aber gibts vieleicht eine ganz einfache Möglichkeit aus der Shell?
Habt vielen Dank,
monparnas
Mit Shellscript Textdatei aufsplitten
Simpelste Variante:
Input muss dabei aber eine reguläre Datei sein, da die Eingabe dreimal gelesen werden muss, um alle drei Patterns zu erwischen.
Will man mehrere Ausgabedateien auf einen Schlag erzeugen, geht das z.B. mit einem Shellskript:
Aufruf mit "./MeinSkript </dev/ttyS0" oder ähnlich.
Das kann man natürlich noch beliebig weiter ausfeilen.
Janka
Code: Alles auswählen
$ grep <Input >Strom '^I' ; grep <Input >Spannung '^U'; grep <Input >Frequenz '^F'
Will man mehrere Ausgabedateien auf einen Schlag erzeugen, geht das z.B. mit einem Shellskript:
Code: Alles auswählen
#!/usr/bin/bash
while read TYPE VALUE TIMESTAMP DUMMY
do
echo $TYPE $VALUE $TIMESTAMP >Output.$TYPE
done
Das kann man natürlich noch beliebig weiter ausfeilen.
Janka
Ich vertonne Spam immer in /dev/dsp statt /dev/null.
Ich mag die Schreie.
Ich mag die Schreie.
Vielen Dank für Deine Vorschläge.
Bei der Shellskriptlösung musste ich noch eine kleine Korrektur anbringen:
es bedarf eines >>, sonst steht nur jeweils die letzte Zeile drin.
Vielen Dank!!
Bei der Shellskriptlösung musste ich noch eine kleine Korrektur anbringen:
Code: Alles auswählen
[..]
echo $TYPE $VALUE $TIMESTAMP >>Output.$TYPE
[..]
Vielen Dank!!