Intereting Posts
Как выполнить автоматическое назначение параметров в соответствии с шаблоном имени файла? CentOS 6 включает шлюз для статического IP-адреса Как показать на рабочем столе предупреждающее сообщение Отключить atd (и другие ненужные процессы запуска) в Ubuntu? Поиск и замена Perl записывает каждый файл Как запустить gedit с терминала и отсоединить его (как работает команда «subl»)? В то время как цикл с результатом от функции – BASH найти поле и переместить его до конца строки Как настроить SOCKS4 или 5 прокси на CentOS 5.8? Поверните изображение, если ширина больше значения (то есть в пикселях) Переключение контекста или высокая очередь выполнения, кто виноват? couchdb не запускается Преобразовать временную метку unix в hh: mm: ss: SSS (где SSS – миллисекунды) в AWK Перенос репозитория APT из плоского в обычный формат прозрачно для конечного пользователя Невидимый курсор после установки FGLRX (Debian Jessie)

Преобразовать временную метку unix в hh: mm: ss: SSS (где SSS – миллисекунды) в AWK

Как преобразовать временную метку unix в hh: mm: ss: SSS (где SSS – миллисекунды) в AWK.

Например:

echo 1456478048306 > time cat time | awk ....... > readable_time_format 

date GNU:

 d=1456478048306 s=${d%???} ms=${d#"$s"} date -d "@$s" +"%F %T.$ms %z" # or: date -d "$s.$ms" '+%F %T.%3N %z' 

С date BSD:

 date -r "$s" +"%F %T.$ms %z" 

С GNU awk и последними версиями mawk (начиная с 1.3.4 20121129 ):

 echo 1456478048306 | awk '{ print strftime("%F %T." substr($0,length-2) " %z", substr($0, 1, length-3))}' 

Для переносимости perl может быть вашим лучшим выбором:

 echo 1456478048306 | perl -MPOSIX -lne ' print strftime "%F %T.$2 %z", localtime $1 if /(.+)(.{3})/' 

Здесь, давая мой предпочтительный более обычный и менее двусмысленный формат:

 2016-02-26 09:14:08.306 +0000 

но, конечно, вы можете настроить формат strftime по своему усмотрению.

Если вы не заботитесь о часовых поясах и секундах секунд, и по какой-то причине ваш awk не поддерживает strftime , вы можете рассчитать его напрямую:

 awk '{ t=$1;sss=(t % 1000); t/=1000; ss=(t%60); t/=60; mm=(t%60); t/=60; hh=(t%24); printf("%02d:%02d:%02d.%03d\n",hh,mm,ss,sss); }'