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.