Skriptfrage - geht das auch eleganter?
Hallo Liste. Folgendes funktioniert: grep "`date "+%b %d" \ | awk '{erg=$2-0;print $1, erg}'`" /var/log/messages Gibt es auch einen eleganteren Weg, alle gestrigen Einträge des Syslog zu bekommen? Mir kommt das vor wie mit Kanonen auf Spatzen geschossen, aber was besseres fällt mir nicht ein. Gruß. -- Antworten an lists@feile.net werden in /dev/null archiviert! Bitte ggf. lists... durch mail... ersetzen. Andreas Feile www.feile.net
Andreas Feile schrieb am 10/22/2004 12:29 PM:
Hallo Liste.
Folgendes funktioniert:
grep "`date "+%b %d" \ | awk '{erg=$2-0;print $1, erg}'`" /var/log/messages
Gibt es auch einen eleganteren Weg, alle gestrigen Einträge des Syslog zu bekommen? Mir kommt das vor wie mit Kanonen auf Spatzen geschossen, aber was besseres fällt mir nicht ein.
Du koenntest date -d yesterday "+%b %d" verwenden und Dir damit das Gefrickel mit awk sparen... ;) MfG, Michael.
Michael Schachtebeck, Freitag, 22. Oktober 2004 12:49:
date -d yesterday "+%b %d"
verwenden und Dir damit das Gefrickel mit awk sparen... ;)
Hmpf... ich habs doch gewußt... Danke. -- Antworten an lists@feile.net werden in /dev/null archiviert! Bitte ggf. lists... durch mail... ersetzen. Andreas Feile www.feile.net
Hi Der Tip mit der --date oder -d Option kam ja schon. Kleiner Hinweis noch. Probleme kann es mit der locale Einstellung geben. date gibt bei "deutscher" Einstellung nämlich z.B. die Monatsabkürzungen Mär Mai Okt und Dez raus. mfg Axel
Axel Heinrici, Freitag, 22. Oktober 2004 13:11:
Kleiner Hinweis noch. Probleme kann es mit der locale Einstellung geben. date gibt bei "deutscher" Einstellung nämlich z.B. die Monatsabkürzungen Mär Mai Okt und Dez raus.
Bei kommt da ganz fein ein Oct raus. Soweit alles OK also. Ein anderes Problem sehe ich am Monatsanfang. Ein date "+%b %d" gibt sowas wie "Oct 1" zurück. Der Syslog schreibt aber sowas wie "Oct 1" an den Anfang jeder Zeile. Damit würde mein Skript für den 1.-9. jedes Monats nicht funktionieren :( -- Antworten an lists@feile.net werden in /dev/null archiviert! Bitte ggf. lists... durch mail... ersetzen. Andreas Feile www.feile.net
Hallo, Am Fri, 22 Oct 2004, Andreas Feile schrieb:
Axel Heinrici, Freitag, 22. Oktober 2004 13:52:
Dann gebe "man date" und anschließend /%e ein.
Lesen bildet... ;) Danke.
$ man date | grep '%e' $ date --help | grep '%e' %e day of month, blank padded ( 1..31) $ LANG=C date -d '2 weeks ago' '+%b %e' Oct 8 Ok, klappt also mit $ date --version date (GNU sh-utils) 1.16 Mit !GNU date könnte '%-2d' aber portabler sein. BTW: die Formatangaben für date und strftime sind "normal", so bekommt man z.B.: $ date '+%08d' 00000022 $ date '+%-8d' 22 $ -dnh -- 92: Emacs Esc Meta Alt Control Shift
BTW: die Formatangaben für date und strftime sind "normal", so bekommt man z.B.:
$ date '+%08d' 00000022 $ date '+%-8d' 22 Da hab ich jetzt mal rein aus Interesse mal ne Frage dazu. In der manpage steht: "By default, date pads numeric fields with zeroes. GNU date recognizes the following modifiers between `%' and a numeric
Hi On Friday 22 October 2004 15:49, David Haller wrote: ... directive. `-' (hyphen) do not pad the field `_' (underscore) pad the field with spaces" Das ist doch irgendwie widersinnig. Die Formatangabe "+%-d" liefert auch "7" und "+%_d" eine " 7", aber mit Angabe einer Stellenanzahl "+%-8d" bzw. "+%_8d" sind "_" und "-" auf einmal gleichbedeutend. Gibt es dafür eine einleuchtende Erklärung? Und über die Angabe einer Stellenanzahl steht gar nichts in der manpage. Wo hätte ich das denn lesen können, wenn nicht die mail von dir gekommen wäre? mfg Axel
Hallo, Am Fri, 22 Oct 2004, Axel Heinrici schrieb:
BTW: die Formatangaben für date und strftime sind "normal", so bekommt man z.B.:
$ date '+%08d' 00000022 $ date '+%-8d' 22 Da hab ich jetzt mal rein aus Interesse mal ne Frage dazu. In der manpage steht: "By default, date pads numeric fields with zeroes. GNU date recognizes the following modifiers between `%' and a numeric
On Friday 22 October 2004 15:49, David Haller wrote: ... directive. `-' (hyphen) do not pad the field `_' (underscore) pad the field with spaces" Das ist doch irgendwie widersinnig.
Jein. Den Unterschied sieht man nur, wenn man selber keine Feldbreite angibt: $ date '+%2d' -d '3 weeks ago' 02 $ date '+%-d' -d '3 weeks ago' 2 $ date '+%_d' -d '3 weeks ago' 2 $ date '+%-2d' -d '3 weeks ago' 2 'date' erkennt ein Format wie '% 8d' nicht als Format, dafür soll wohl '%_8d' als Ersatz dienen. Zumindest funktioniert es wohl so.
Die Formatangabe "+%-d" liefert auch "7" und "+%_d" eine " 7", aber mit Angabe einer Stellenanzahl "+%-8d" bzw. "+%_8d" sind "_" und "-" auf einmal gleichbedeutend. Gibt es dafür eine einleuchtende Erklärung?
s.o. Denn der '-' bedeuted normalerweise, daß die Ausrichtung des Feldes umgekehrt werden soll (s.u.)
Und über die Angabe einer Stellenanzahl steht gar nichts in der manpage. Wo hätte ich das denn lesen können, wenn nicht die mail von dir gekommen wäre?
man 3 strftime (?), man 3 printf Denn auf diese Routinen greift 'date' zur Ausgabe zu: $ ltrace date '+%-4d' -d '3 weeks ago' > /dev/null [..] mktime(0xbfffe664, 1, 0xbfffe9b8, 0, 0x4000a32c) = 0x415ec60c localtime(0xbfffe69c) = 0x4010b8e0 malloc(200) = 0x080510b8 strftime(" 2", 200, "%-4d", 0x4010b8e0) = 4 printf("%s\n", " 2") = 5 free(0x080510b8) = <void> [..] Das Format zur Ausgabe wird von date offenbar mehr oder weniger schlicht an strftime durchgereicht. HTH, -dnh -- 6.9 is a good thing interupted by a period.
Am Freitag, 22. Oktober 2004 17:41 schrieb Axel Heinrici:
Und über die Angabe einer Stellenanzahl steht gar nichts in der manpage. Wo hätte ich das denn lesen können, wenn nicht die mail von dir gekommen wäre?
'info date' verrät ein wenig mehr, zB --8<--- If given an argument that starts with a `+', `date' prints the current time and date (or the time and date specified by the `--date' option, see below) in the format defined by that argument, which is the same as in the `strftime' function. Except for directives, which start with `%', characters in the format string are printed unchanged. The directives are described below. --->8--- -- O'Brian's Law: Everything is always done for the wrong reasons.
Hallo, Am Fri, 22 Oct 2004, Andreas Feile schrieb: [..]
Ein anderes Problem sehe ich am Monatsanfang.
Ein date "+%b %d" gibt sowas wie
"Oct 1"
zurück. Der Syslog schreibt aber sowas wie
"Oct 1"
an den Anfang jeder Zeile. Damit würde mein Skript für den 1.-9. jedes Monats nicht funktionieren :(
LANG=C date -d 'yesterday' '+%b %-2d' ^^! -dnh --
Sinnvollerweise habe ich Sicherungen von meinen Systemen. Bei IBM unabkömmlich. Steht ja auch in grossen Buchstaben drauf: [I]mmer [B]ackup [M]achen ;-) -- Gerald Schnabel in dchlf
participants (5)
-
Andreas Feile
-
Axel Heinrici
-
David Haller
-
Martin Armbrecht
-
Michael Schachtebeck