У меня есть следующий образец dmesg:dmesg преобразование метки времени в человеческий формат
throttled log output.
57458] bar 3: test 2 on bar 8 is available
[ 19.696163] bar 1403: test on bar 1405 is available
[ 19.696167] foo: [ 19.696168] bar 3: test 5 on bar 1405 is available
[ 19.696178] foo: [ 19.696179] bar 1403: test 5 on bar 1405 is available
[ 20.928730] foo: [ 20.928733] bar 1403: test on bar 1408 is available
[ 20.928742] foo: [ 20.928745] bar 3: test on bar 1408 is available
[ 24.878861] foo: [ 25.878861] foo: [ 25.878863] bar 1403: bar 802 is present
Я хотел бы преобразовать всех временные метки в линии человеческого формата ("%d/%m/%Y %H:%M:%S"
)
Примечание: Это система не имеет dmesg -T
и не установлена perl. Я бы предпочел решение w/sed или awk, но python также является опцией.
Я нашел несколько решений этой проблемы, но никто не ответил на все, что мне нужно. Я также не знаю, как изменить его на мои нужды.
awk -F"]" '{"cat /proc/uptime | cut -d \" \" -f 1" | getline st;a=substr($1,2, length($1) - 1);print strftime("%d/%m/%Y %H:%M:%S",systime()-st+a)" "$0}'
Или
sed -n 's/\]//;s/\[//;s/\([^.]\)\.\([^ ]*\)\(.*\)/\1\n\3/p' | while read first; do read second; first=`date +"%d/%m/%Y %H:%M:%S" --date="@$(($seconds - $base + $first))"`; printf "[%s] %s\n" "$first" "$second"; done
Там же питон скрипт в here. Но выдает некоторые ошибки, с которыми я не понимаю.
Спасибо!
так что вы пробовали? Или просто ждать ответа? – BMW
Попробуйте Google, что ... Просто google ваш текущий заголовок ... – hek2mgl
Я сделал, все ответы конвертируют только первый столбец. В некоторых строках есть три временных метки. Команда sed, которую я обнаружил, терпит неудачу в первых двух строках. –