[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: Bash Einzeiler Zeit+Datum letzter Eintrag dmesg



Hi!

2011/8/12 Frank Lassowski <flassowski@gmx.de>
Moin!

Folgendes funktioniert, um Zeit und Datum des letzten dmesg-Eintrages zu
ermitteln:

let lastentry=$(dmesg|tail -n 1|cut -f1 -d"."|cut -c2-|cut -f2 -d" ");let
boot=$(cut -f1 -d. /proc/uptime);let lastdate=$boot-$lastentry;date -d
"$lastdate seconds ago"

Ist aber ganz schön lang, und ich ahne, dass awk/sed das kürzer könnten,
aber die beiden sind was für Gebildete...

Wisst Ihr, wie es kürzer ginge?

EINE Möglichkeit, wenn man sed verwenden möchte:

let lastentry=$(dmesg|tail -n 1|cut -f1 -d"."|cut -c2-|cut -f2 -d" ")
->
let lastentry=$(dmesg | sed -e '$!d' -e 's,.\(.*\)\..*,\1,')

let boot=$(cut -f1 -d. /proc/uptime)
->
let boot=$(sed 's,\..*,,' /proc/uptime)

let lastdate=$boot-$lastentry
date -d "$lastdate seconds ago"

==>

let lastentry=$(dmesg|sed -e '$!d' -e 's,.\(.*\)\..*,\1,');let boot=$(sed 's,\..*,,' /proc/uptime);let lastdate=$boot-$lastentry;date -d "$lastdate seconds ago"

Ist aber auch nicht sonderlich kürzer ;) Dafür wird aber nur
sed als externes Tool verwendet. Zuvor hast Du nur cut
verwendet, dafür aber besonders bei $lastentry mehrfach
aufgerufen. Ach, und tail brauche ich da auch nicht mehr.

Ob's besser ist — weiss nicht ;)
 

Alexander
--
↯    Lifestream (Twitter, Blog, …) ↣ http://alexs77.soup.io/     ↯
↯ Chat (Jabber/Google Talk) ↣ a.skwar@gmail.com , AIM: alexws77  ↯


Reply to: