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

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

Например:

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

2 Solutions collect form web for “Преобразовать временную метку unix в hh: mm: ss: SSS (где SSS – миллисекунды) в AWK”

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); }' 
  • Использовать только mtime-сравнение с rsync?
  • Универсальная альтернативная альтернатива non-bash `time`?
  • Извлечь дату создания и время изменения файла в Sunos
  • Найти файлы между двумя папками в linux?
  • Параметр -link-dest от rsync не связан из-за времени файла
  • Извлеките метки времени и найдите разницу
  • Продолжить загрузку, если временная метка не изменилась
  • Поиск файлов по дате изменения
  • Удалите все, кроме последнего n файла для каждой группы файлов, которые имеют один и тот же префикс в каталоге
  • Получить дату изменения, которую можно использовать с touch -m
  • Почему у моего файла есть несколько записей crtime?
  • Interesting Posts

    Как подождать по программе, запущенной в другой оболочке

    Неподкрепленная история поиска подстроки в bash

    KDE / LightDM – отключить несколько пользователей, которые вошли в систему / 'переключатель пользователя'

    Что нового в Kernel 3.0?

    error: getrlimit (RLIMIT_CORE): операция не разрешена. Proftpd на Embbeded Linux enviorment

    Как написать сценарий bash для сообщения состояний машины и условного ping их?

    Как найти и заменить определенную строку в определенной строке

    Невозможно выполнить swapoff, но достаточно физической памяти.

    RC-сценарий, который выдается на передний план по определенным критериям

    Как создать массив 3x3TB RAID 5 без потери данных с двух дисков?

    Можно ли просмотреть историю другой оболочки?

    Репо APT secure – apt-get обновить подпись GPG недопустимы

    Как печатать строки с пустым пятым полем в CSV

    Как увидеть man-страницу предыдущей команды?

    У Solaris есть эквивалент /etc/ld.so.conf?

    Linux и Unix - лучшая ОС в мире.