| Vorheriges Thema anzeigen :: Nächstes Thema anzeigen |
| Autor |
Nachricht |
monparnas Gast
|
Verfasst am: 29. Apr 2011 15:09 Titel: Mit Shellscript Textdatei aufsplitten |
|
|
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 |
|
| |
|
|
Janka

Anmeldungsdatum: 11.02.2006 Beiträge: 3270
|
Verfasst am: 30. Apr 2011 8:55 Titel: |
|
|
Simpelste Variante:
| Code: |
$ grep <Input >Strom '^I' ; grep <Input >Spannung '^U'; grep <Input >Frequenz '^F'
|
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:
| Code: |
#!/usr/bin/bash
while read TYPE VALUE TIMESTAMP DUMMY
do
echo $TYPE $VALUE $TIMESTAMP >Output.$TYPE
done
|
Aufruf mit "./MeinSkript </dev/ttyS0" oder ähnlich.
Das kann man natürlich noch beliebig weiter ausfeilen.
Janka _________________ Ich vertonne Spam immer in /dev/dsp statt /dev/null.
Ich mag die Schreie. |
|
| |
|
|
monparnas Gast
|
Verfasst am: 02. Mai 2011 10:21 Titel: |
|
|
Vielen Dank für Deine Vorschläge.
Bei der Shellskriptlösung musste ich noch eine kleine Korrektur anbringen:
| Code: |
[..]
echo $TYPE $VALUE $TIMESTAMP >>Output.$TYPE
[..]
|
es bedarf eines >>, sonst steht nur jeweils die letzte Zeile drin.
Vielen Dank!! |
|
| |
|
|
|
|