разделенные дата и время сталкиваются с пробелом между ними в bash - PullRequest
0 голосов
/ 25 февраля 2020

из моего wp cli Я получаю такой формат даты:

ГГГГ-мм-ддЧЧ-мм-сс, например: 2020-02-2514: 24: 25

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

Я хотел бы разделить дату и время с пробелом между ними, но я не знаю, как это сделать в настоящее время.

с помощью регулярного выражения может быть, но я только что видел, как заменить пробел, и я nooby с bash регулярное выражение.

спасибо за вашу помощь

Ответы [ 2 ]

1 голос
/ 25 февраля 2020

Просто используйте cut

root@a036fb1c94fa:~# DATE=$(echo "2020-02-2514:24:25" | cut -b-10)
root@a036fb1c94fa:~# TIME=$(echo "2020-02-2514:24:25" | cut -b11-)
root@a036fb1c94fa:~# TIMESTAMP=$(date -d "$DATE $TIME" +"%s")
root@a036fb1c94fa:~# echo $TIME
14:24:25
root@a036fb1c94fa:~# echo $DATE
2020-02-25
root@a036fb1c94fa:~# echo $TIMESTAMP
1582637065

Объяснение:

echo "2020-02-2514:24:25" | cut -b-10

выводит строку и обрезает ее перед 10-м байтом

echo "2020-02-2514:24:25" | cut -b11-

выводит строку и обрезает ее от 11-го байта до конца

echo date -d "$DATE $TIME" +"%s"

задает правильный формат для команды unix date, с + "% s", чтобы получить ее метку времени

0 голосов
/ 25 февраля 2020

Вам не нужно никаких регулярных выражений. Вы можете выбрать подстроки в bash.

Если переменная wpdate содержит строку, возвращаемую wp cli, соответствующую метку времени можно поместить в переменную timestamp следующим образом:

timestamp=$(date '+%s' --date "${wpdate:0:10} ${wpdate:10:8}")

Объяснение: ${wpdate:10:8} означает подстроку wpdate, начиная с позиции 10 и содержащую 8 символов.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...