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.