как переформатировать дату в текстовом файле с помощью Bash - PullRequest
0 голосов
/ 08 июля 2019

У меня длинный текстовый файл, t1.txt.Например, у меня есть следующий текст:

"2019-03-11T12:20:22.330Z"
plenty of text ...
"2019-03-11T12:20:43.082Z"
plenty of text ...

Я хотел бы переформатировать отметку даты, чтобы она напоминала что-то вроде

Day of the week
time (as in 13.48 for example)
plenty of text ...

Это вообще возможно сделать в bash?

1 Ответ

2 голосов
/ 08 июля 2019

Perl на помощь:

perl -MTime::Piece -pe 's/^"([0-9]{4}-[0-9]{2}-[0-9]{2}T[0-9]{2}:[0-9]{2}:[0-9]{2})\.[0-9]+Z"$/
    Time::Piece->strptime($1, "%Y-%m-%dT%H:%M:%S")->strftime("%A\n%H:%M")
/e' -- t1.txt
  • -p читает строку ввода построчно и печатает каждую строку после обработки
  • -M использует модуль, Time :: Piece - основной модуль, который обрабатывает базовый разбор и форматирование времени
  • s/PATTERN/REPLACEMENT/ является заменой, аналогичной sed
  • /e модификатор в замене интерпретирует часть ЗАМЕНЫ как код и запускает ее
  • strptime разбирает время, детали формата можно найти в man strptime
  • strftime форматирует время, где %A - полное название дня, \n - новая строка, %H - часы и %M - минуты
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...