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 User logged in
אפשר לחלץ ולהמיר את חלק התאריך באמצעות awk
ו-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_date
דוגמת פלט:
Saturday, April 01, 2023
דוגמא זו משתמשת ב-awk
כדי לפצל את שורת היומן ולחלץ את חלק התאריך ($1
מייצג את השדה הראשון המופרד ברווח), ולאחר מכן משתמשים ב-date
כדי להמיר אותו.
שימוש בכלים של צד שלישי
לניתוח מורכב יותר או כאשר מתמודדים עם מגוון רחב של פורמטים של תאריכים, כלים של צד שלישי כמו dateutils
יכולים להיות מועילים מאוד.
דוגמא עם dateutils
:
בהנחה שיש לך מחרוזת תאריך בפורמט לא סטנדרטי, למשל, April 01, 2023
.
original_date="April 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.