Hi all,
ich habe folgendes Problem:
Ich habe eine Datei mit ca. 120.000Zeilen. Alle 180-200 Zeilen steht -> Begin:DATUM/ZEIT
danach folgen die 180-200 Zeilen die den Messpunkt zu diesem Zeitpunkt haben.
Da ich die Datei mit Excel weiterverarbeiten will, benötige ich die Zeit entweder vor jeder der 200 Zeilen oder danach (so dass sie im Excel als eigene Spalte auftaucht)
Die Problematikm besteht also, dass jeweils von Begin bis Begin die Zeilen dazwischen mit dem ausgelesen Datum versehen werden sollen.
Irgendeine Lösung wie ich das hinbekommen könnte?
Thx
ericmk
Zeitstempel vor/hinter Textzeile per Skript
-
- Beiträge: 2951
- Registriert: 24.12.2010 16:50:59
- Lizenz eigener Beiträge: MIT Lizenz
- Wohnort: Rheinland
Re: Zeitstempel vor/hinter Textzeile per Skript
In der Skriptsprache deines Vertrauens die Datei zeilenweise einlegen. Eine Variable definieren, welche immer den letzten Zeitstempel enthaelt. Eine Bedingung entscheidet, ob es sich um eine Zeitstempelzeile handelt und die Variable aktualisiert werden muss. Wenn nicht, dann wird die gelesene Zeile ausgegeben mit vorangestelltem Zeitstempel (Variable).
Als Bash-Skript (ohne dem Einsatz von IFS) sieht es so aus:
Inhalt meiner test.dat:
Ausgabe:
Als Bash-Skript (ohne dem Einsatz von IFS) sieht es so aus:
Code: Alles auswählen
TSTAMP=0
while read line
do
if echo $line | grep -q ^Begin
then
TSTAMP=$(echo $line | cut -d: -f2)
else
echo $TSTAMP,$line
fi
done < test.dat
Code: Alles auswählen
Begin:1369496069
1
2
3
4
5
Begin:1369496083
1
2
3
4
5
Code: Alles auswählen
1369496069,1
1369496069,2
1369496069,3
1369496069,4
1369496069,5
1369496083,1
1369496083,2
1369496083,3
1369496083,4
1369496083,5
Re: Zeitstempel vor/hinter Textzeile per Skript
Einmal Hüh, eimal Hott, was willst Du denn jetzt wirklich?
http://www.unixboard.de/vb3/showthread. ... le-stellen
Exakte Problembeschreibungen erleichtern die Hilfe sehr.
http://www.unixboard.de/vb3/showthread. ... le-stellen
Exakte Problembeschreibungen erleichtern die Hilfe sehr.
Re: Zeitstempel vor/hinter Textzeile per Skript
Die Ausgangsdatei per 'csplit' separieren? In etwaAlle 180-200 Zeilen steht -> Begin:DATUM/ZEIT
Code: Alles auswählen
csplit Ausgangsdatei '/^Begin:/' {*}
Das Format dieser Zeitangabe kann per 'date' umformatiert werden.
Ein 'grep . *' gibt Dir dann eine Ausgabe des Inhalts aller Dateien mit der Sekundenzeit (dem Dateinamen) am Anfang.
EDIT Vorraussetzung für Brauchbarkeit ist, daß die Meldungen auch maximal sekündlich eintreffen,
und die Zeitangabe diese Auflösung widerspiegelt.
'date' hat die Möglichkeit, auch kleinere Abstände / höhere Auflösung wiederzugeben, 'date +%s%N'.
Zuletzt geändert von rendegast am 26.05.2013 11:44:50, insgesamt 2-mal geändert.
mfg rendegast
-----------------------
Viel Eifer, viel Irrtum; weniger Eifer, weniger Irrtum; kein Eifer, kein Irrtum.
(Lin Yutang "Moment in Peking")
-----------------------
Viel Eifer, viel Irrtum; weniger Eifer, weniger Irrtum; kein Eifer, kein Irrtum.
(Lin Yutang "Moment in Peking")
-
- Beiträge: 2951
- Registriert: 24.12.2010 16:50:59
- Lizenz eigener Beiträge: MIT Lizenz
- Wohnort: Rheinland
Re: Zeitstempel vor/hinter Textzeile per Skript
Smart.rendegast hat geschrieben:Die Ausgangsdatei per 'csplit' separieren? In etwaAlle 180-200 Zeilen steht -> Begin:DATUM/ZEITDann zBsp. die entstandenen Dateien nach der Sekundenzeit der Begin-Zeile umbenennen.Code: Alles auswählen
csplit Ausgangsdatei '/^Begin:/' {*}
Das Format dieser Zeitangabe kann per 'date' umformatiert werden.
Ein 'grep . *' gibt Dir dann eine Ausgabe des Inhalts aller Dateien mit der Sekundenzeit (dem Dateinamen) am Anfang.