Hallo zusammen, wenn ich ein Logfile mitlesen will und folgendes eingebe: tail -f $LOGFILE | awk -F' ' '{ print $1,$7 }' Dann sehe ich schon fortlaufend Feld 1 und 7 des Logfiles. Gebe ich aber ein: tail -f $LOGFILE | cut -d ' ' -f 1,7 Dann sehe ich lange Zeit nichts, und dann sämtliche aufgelaufenen Zeilen auf einmal. Warum? -- Andre Tann -- Um die Liste abzubestellen, schicken Sie eine Mail an: opensuse-de+unsubscribe@opensuse.org Um eine Liste aller verfuegbaren Kommandos zu bekommen, schicken Sie eine Mail an: opensuse-de+help@opensuse.org
Hallo, Am Mittwoch, 14. Mai 2008 14:42:13 schrieb Andre Tann:
wenn ich ein Logfile mitlesen will und folgendes eingebe:
tail -f $LOGFILE | awk -F' ' '{ print $1,$7 }'
Dann sehe ich schon fortlaufend Feld 1 und 7 des Logfiles. Gebe ich aber ein:
tail -f $LOGFILE | cut -d ' ' -f 1,7
Dann sehe ich lange Zeit nichts, und dann sämtliche aufgelaufenen Zeilen auf einmal. Warum?
(wenn ich mich recht entsinne): Die Felder werden bei cut durch __ein__ Leerzeichen (-d " ") getrennt. Stehen mehrere Leerzeichen hintereinander, oder gar ein TAB, dann gibt's Probleme. AWK macht das anders: As each input record is read, gawk splits the record into fields, using the value of the FS variable as the field separator. ..... FS is expected to be a full regular expression. In the special case that FS is a single space, fields are separated by runs of spaces and/or tabs and/or newlines. Im Defaultfall werden mehrere Leerzeichen, Tabs etc. als Feldtrenner zusammengefasst. Bye Jürgen -- Dr.rer.nat. Juergen Vollmer, Viktoriastrasse 15, D-76133 Karlsruhe Tel: +49(721) 92 04 87 1 Fax: +49(721) 92 04 87 2 Juergen.Vollmer@informatik-vollmer.de www.informatik-vollmer.de Internet-Telefonie: www.skype.com Benutzer: juergen.vollmer
Hi Andre, Am Mittwoch 14 Mai 2008 14:42:13 schrieb Andre Tann:
wenn ich ein Logfile mitlesen will und folgendes eingebe:
tail -f $LOGFILE | awk -F' ' '{ print $1,$7 }'
Dann sehe ich schon fortlaufend Feld 1 und 7 des Logfiles. Gebe ich aber ein:
tail -f $LOGFILE | cut -d ' ' -f 1,7
Dann sehe ich lange Zeit nichts, und dann sämtliche aufgelaufenen Zeilen auf einmal. Warum?
awk arbeitet grundsätzlich zeilenweise, bei cut wird erst ein puffer gefüllt bis eine Ausgabe erfolgt, alternativ erfolgt die ausgabe sofort beim fileende des input streams was bei einem tail -f aber nicht so leicht kommt. Gruss Falk -- Um die Liste abzubestellen, schicken Sie eine Mail an: opensuse-de+unsubscribe@opensuse.org Um eine Liste aller verfuegbaren Kommandos zu bekommen, schicken Sie eine Mail an: opensuse-de+help@opensuse.org
Hallo, Falk Sauer wrote:
Am Mittwoch 14 Mai 2008 14:42:13 schrieb Andre Tann:
wenn ich ein Logfile mitlesen will und folgendes eingebe:
tail -f $LOGFILE | awk -F' ' '{ print $1,$7 }'
Dann sehe ich schon fortlaufend Feld 1 und 7 des Logfiles. Gebe ich aber ein:
tail -f $LOGFILE | cut -d ' ' -f 1,7
Dann sehe ich lange Zeit nichts, und dann sämtliche aufgelaufenen Zeilen auf einmal. Warum?
awk arbeitet grundsätzlich zeilenweise, bei cut wird erst ein puffer gefüllt bis eine Ausgabe erfolgt, alternativ erfolgt die ausgabe sofort beim fileende des input streams was bei einem tail -f aber nicht so leicht kommt.
http://www.pixelbeat.org/programming/stdio_buffering/ Joachim -- Um die Liste abzubestellen, schicken Sie eine Mail an: opensuse-de+unsubscribe@opensuse.org Um eine Liste aller verfuegbaren Kommandos zu bekommen, schicken Sie eine Mail an: opensuse-de+help@opensuse.org
Hallo Andre, Andre Tann wrote:
wenn ich ein Logfile mitlesen will und folgendes eingebe:
tail -f $LOGFILE | awk -F' ' '{ print $1,$7 }'
Dann sehe ich schon fortlaufend Feld 1 und 7 des Logfiles. Gebe ich aber ein:
tail -f $LOGFILE | cut -d ' ' -f 1,7
Dann sehe ich lange Zeit nichts, und dann sämtliche aufgelaufenen Zeilen auf einmal. Warum?
Versuch mal tail -f $LOGFILE | unbuffer -p cut -d ' ' -f 1,7 Joachim -- Um die Liste abzubestellen, schicken Sie eine Mail an: opensuse-de+unsubscribe@opensuse.org Um eine Liste aller verfuegbaren Kommandos zu bekommen, schicken Sie eine Mail an: opensuse-de+help@opensuse.org
participants (4)
-
Andre Tann
-
Dr. Jürgen Vollmer
-
Falk Sauer
-
Joachim Marx