Я сделал описанным ниже способом, используя awk и sed.
команда:
echo "Mon Apr 22 05:06:00 UTC 2019"|awk '{$(NF-1)="";print $0}'| sed -r "s/\s+/ /g"| sed "s/ /,/g"
выход:
Mon,Apr,22,05:06:00,2019
Если единственная проблема заключается в том, что %N
показывает 9 цифр вместо 3, вы можете исправить это, добавив префикс с количеством цифр для отображения%3N
$ date +"%Y-%m-%d %H:%M:%S,%3N"
2020-10-12 09:52:19,931
Обратите внимание, что %N
является расширением GNU date
, которое дает N
аносекундную часть текущего времени (0 -, дополненную до 9 цифр ). Вместо этого, чтобы получить миллисекунды, вы можете сделать:
date '+%F %T,%3N'
Если вы пишете zsh-скрипт, вы можете сделать его переносимым с помощью strftime
встроенной:
zmodload zsh/datetime
strftime '%F %T,%3.'
Сокращение от:
zmodload zsh/datetime
strftime '%F %T,%3.' $epochtime
Или чтобы символ системы счисления был символом пользователя (, предполагая, что это не %
, но я не знаю ни одной локали, где был бы символ системы счисления%
):
zmodload zsh/datetime
zmodload zsh/langinfo
strftime "%F %T${langinfo[RADIXCHAR]}%3."
Если это скрипт ksh93, вы можете сделать это с помощью его printf
встроенной:
printf '%(%F %T,%3N)T\n'
Сокращение от:
printf '%(%F %T,%3N)T\n' now
Или снова с системой счисления пользователя (, если это не так%
):
radixchar=$((1e-1))
radixchar=${radixchar//[0123456789]}
printf "%(%F %T${radixchar}%3N)T\n"