Bash:
Analiza składniowa daty z łańcucha znaków
Jak to zrobić:
Sam Bash jest dość ograniczony w bezpośrednich możliwościach analizy dat, często polegając na zewnętrznych narzędziach takich jak date i awk do bardziej zaawansowanej manipulacji. Oto jak można przeanalizować określony format, a następnie użyć go z poleceniem date do konwersji lub wykonania operacji.
Przykład 1: Wyodrębnij string daty i przekształć go na inny format.
Załóżmy, że masz datę w formacie rrrr-mm-dd i chcesz ją przekształcić na dd-mm-rrrr.
original_date="2023-04-01"
formatted_date=$(date -d $original_date '+%d-%m-%Y')
echo $formatted_datePrzykładowy wynik:
01-04-2023Używa to polecenie date z opcją -d do określenia wejściowego stringa daty i +%d-%m-%Y do formatowania wyniku.
Przykład 2: Użycie awk do wyodrębnienia daty z uporządkowanego tekstu logu i jej przekształcenia.
Załóżmy, że masz linię pliku logu:
2023-04-01 12:00:00 User logged inMożesz wyodrębnić i przekształcić część daty używając awk i date.
log_line="2023-04-01 12:00:00 User logged in"
date_part=$(echo $log_line | awk '{print $1}')
formatted_date=$(date -d $date_part "+%A, %B %d, %Y")
echo $formatted_datePrzykładowy wynik:
Sobota, Kwiecień 01, 2023Ten przykład używa awk do podzielenia linii logu i wyodrębnienia części daty ($1 reprezentuje pierwsze pole rozdzielone spacją), a następnie date jest używany do jej ponownego sformatowania.
Użycie narzędzi stron trzecich
Do bardziej złożonej analizy lub przy radzeniu sobie z szeroką gamą formatów dat, bardzo przydatne mogą być narzędzia stron trzecich, takie jak dateutils.
Przykład z dateutils:
Załóżmy, że masz string daty w niestandardowym formacie, na przykład Kwiecień 01, 2023.
original_date="Kwiecień 01, 2023"
formatted_date=$(dateconv -i "%B %d, %Y" -f "%Y-%m-%d" <<< $original_date)
echo $formatted_datePrzykładowy wynik:
2023-04-01To polecenie korzysta z dateconv z dateutils, określając format wejściowy za pomocą -i i pożądany format wyjściowy za pomocą -f. dateutils obsługuje ogromny zakres formatów dat i czasu, co czyni go bardzo wszechstronnym narzędziem do zadań związanych z analizą daty w skryptach Bash.