Вы можете использовать настройки прокси в Firefox. Здесь я предположил, что ваша локальная сеть — 192.168.122.0/24
, но вы должны адаптировать ее к своему случаю.
Это не то, что вы можете сделать с помощью команды bash, вам нужна внешняя программа, так как bash не может выполнять математические операции с плавающей запятой и не может обрабатывать даты. Я подозреваю, что вы просто имели в виду «в командной строке», и вам на самом деле не требуется чистое решение bash. Исходя из этого предположения, вот решениеgawk
(GNU awk ):
$ gawk '{$1=strftime("%d.%m.%Y %H:%m:%S",sprintf("%.3f", $1 /1000))}1;' file
02.04.2018 19:04:24 entity1,sometext
02.04.2018 19:04:41 entity2,sometext
02.04.2018 19:04:47 entity1,sometext
Функция strftime
преобразует метку времени в дату. Так как у вас в миллисекундах, мы используем sprintf
, чтобы преобразовать это в секунды. Окончательный 1;
просто указывает gawk
напечатать строку после того, как мы присвоили новое значение$1
(первому полю ).
Помните, что вывод будет зависеть от вашего часового пояса. Например, вышеописанное было запущено на машине с часовым поясом по Гринвичу. Вот почему мои числа отличаются от тех, что указаны в ответе @thanasisp , который, предположительно, был запущен в другом часовом поясе.Вы можете контролировать это и изменять вывод, устанавливая переменную TZ
при выполнении команды. Например, сравните это:
$ gawk '{$1=strftime("%d.%m.%Y %H:%m:%d.%S",sprintf("%.3f", $1 /1000))}1;' file
02.04.2018 19:04:02.24 entity1,sometext
02.04.2018 19:04:02.41 entity2,sometext
02.04.2018 19:04:02.47 entity1,sometext
к этому:
$ TZ=America/Los_Angeles gawk '{$1=strftime("%d.%m.%Y %H:%m:%d.%S",sprintf("%.3f", $1 /1000))}1;' file
02.04.2018 11:04:02.24 entity1,sometext
02.04.2018 11:04:02.41 entity2,sometext
02.04.2018 11:04:02.47 entity1,sometext
Или это:
$ TZ=Asia/Tokyo gawk '{$1=strftime("%d.%m.%Y %H:%m:%d.%S",sprintf("%.3f", $1 /1000))}1;' file
03.04.2018 03:04:03.24 entity1,sometext
03.04.2018 03:04:03.41 entity2,sometext
03.04.2018 03:04:03.47 entity1,sometext
Если вы используете сценарий оболочки, читающий строку за строкой, или awk
систему вызова сценариев date
, это будет очень медленно, слишком много процессов. Вы должны использовать простой скрипт на awk, Perl, Python или что-то в этом роде. Все языки имеют стандартные функции даты и времени для преобразования между форматами.
Здесь и здесь — несколько хороших ссылок. Если вы хотите использовать функции времени GNUawk
и strftime()
, все, что вам нужно для вашего случая, это выбрать подстроку эпохи, исключая миллисекунды :
$ awk '{$1 = strftime("%F %T", substr($1,1,10))} 1' file
2018-04-02 21:25:24 entity1,sometext
2018-04-02 21:25:41 entity2,sometext
2018-04-02 21:25:47 entity1,sometext
Или печатать миллисекунды вместе:
$ awk '{$1 = strftime("%F %T", substr($1,1,10)) "." substr($1,11)} 1' file
2018-04-02 21:25:24.403 entity1,sometext
2018-04-02 21:25:41.466 entity2,sometext
2018-04-02 21:25:47.273 entity1,sometext
Или для печати дня -месяца -Формат года:
$ awk '{$1 = strftime("%d-%m-%Y %T", substr($1,1,10))} 1' file
02-04-2018 21:25:24 entity1,sometext
02-04-2018 21:25:41 entity2,sometext
02-04-2018 21:25:47 entity1,sometext