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

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

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

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

С регулярным выражением может быть, но я только что видел, как заменить пробел, и я нуби с регулярным выражением Баш.

Спасибо за помощь

0
Njaka Eric Ravoavy 25 Фев 2020 в 18:42

2 ответа

Лучший ответ

Просто используйте вырезать

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", чтобы получить его метку времени

1
franzisk 25 Фев 2020 в 16:03

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

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

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

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

0
Pierre François 25 Фев 2020 в 15:57