Bash:
Розбір дати з рядка
Як це робити:
Сам Bash цілковито обмежений у прямому аналізі дат, часто покладаючись на зовнішні інструменти, такі як date
та awk
, для більш складної маніпуляції. Ось як ви можете проаналізувати конкретний формат, а потім використовувати його з командою date
, щоб перетворити його або виконати операції.
Приклад 1: Витягти рядок дати та конвертувати його в інший формат.
Припустімо, у вас є дата у форматі yyyy-mm-dd
і ви хочете конвертувати її в dd-mm-yyyy
.
original_date="2023-04-01"
formatted_date=$(date -d $original_date '+%d-%m-%Y')
echo $formatted_date
Приклад виводу:
01-04-2023
Це використовує команду date
з опцією -d
для вказівки вхідного рядка дати та +%d-%m-%Y
для форматування виводу.
Приклад 2: Використання awk
для аналізу дати зі структурованої текстової лінії та її конвертації.
Припустимо, у вас є рядок файлу лога:
2023-04-01 12:00:00 Користувач увійшов у систему
Ви можете витягти та конвертувати частину дати, використовуючи awk
і date
.
log_line="2023-04-01 12:00:00 Користувач увійшов у систему"
date_part=$(echo $log_line | awk '{print $1}')
formatted_date=$(date -d $date_part "+%A, %B %d, %Y")
echo $formatted_date
Приклад виводу:
Субота, Квітень 01, 2023
У цьому прикладі використовується awk
для розбиття рядка логу та вилучення частини дати ($1
представляє перше поле, обмежене пробілом), а потім використовується date
для його переформатування.
Використання інструментів сторонніх розробників
Для більш складного аналізу або при роботі з широким різноманіттям форматів дат інструменти сторонніх розробників, такі як dateutils
, можуть бути дуже корисними.
Приклад з dateutils
:
Припустімо, у вас є рядок дати в нестандартному форматі, наприклад, Квітень 01, 2023
.
original_date="Квітень 01, 2023"
formatted_date=$(dateconv -i "%B %d, %Y" -f "%Y-%m-%d" <<< $original_date)
echo $formatted_date
Приклад виводу:
2023-04-01
Ця команда використовує dateconv
з dateutils
, вказуючи вхідний формат за допомогою -i
і бажаний вихідний формат за допомогою -f
. dateutils
підтримує величезний діапазон форматів дати та часу, роблячи його дуже гнучким для завдань аналізу дат у скриптах Bash.