Как конвертировать дату с «Oct 01 20:00» в формат «1 октября 20:00» (пробел)?

Здесь Oct 01 должен быть напечатан как Oct 1 т. Е. Без 0. Мне нужно два пробела между Oct и 1, например, Oct 1 .

  • Я перепутал свои системные часы в Arch Linux
  • Запуск нескольких программ в фоновом режиме и проверка их возвращаемого значения
  • Петля игнорирует изменение переменной из подоболочки в фоновом режиме
  • Печать эпохи с использованием даты
  • Заменить текущий процесс на его coprocess / child
  • Скрипт не работает, но команда работает вне сценария
  • Есть ли способ имитировать событие «Закрыть» в разных окнах с помощью терминала?
  • Как обрабатывать даты ISO8601 с помощью команды date linux
  • почему существует случайное поведение для фоновой работы?
  • Недействительное время на FreeBSD
  • Сценарий Ed работает только в том случае, если набирается медленно
  • Печать эпохи с использованием даты
  • 2 Solutions collect form web for “Как конвертировать дату с «Oct 01 20:00» в формат «1 октября 20:00» (пробел)?”

    date GNU:

     date -d "Oct 01 20:00" "+%b %_d %k:%M" 

    Где:

    • %b : название сокращенного месяца локали (например, Jan)
    • %_d : день месяца (пробел)
    • %k : час (0,23)
    • %M : минута (00..59)

    Ouput:

     Oct 1 20:00 

    Если вы хотите преобразовать эти строки, если их найдете в некотором тексте, и только когда они будут следовать этому конкретному шаблону Mmm dd HH:MM в системе GNU или FreeBSD (и производных), вы можете сделать следующее:

     sed -E "s/($(locale abmon|tr ';' '|')) 0([0-9] [0-2][0-9]:[0-5][0-9])/\1 \2/g" 

    Он берет список сокращений имени месяца от результата locale abmon чтобы адаптироваться к предпочтению локализации вызывающего. Используйте LC_ALL=C locale abmon чтобы LC_ALL=C locale abmon сокращения имени английского месяца.

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