לדלג לתוכן

1.5 פקודות מתקדמות פתרון

פתרון לתרגיל 1:

המשימה היא לחפש כתובות IP שביצעו יותר מ-10 גישות ביום ולהציג את מספר הגישות שלהן בסדר יורד.

הפקודה הראשונה תסנן את כתובת ה-IP מכל שורה בקובץ, ולאחר מכן נשתמש בפקודות sort ו-uniq כדי למיין ולספור את הגישות:

awk '{print $1}' access.log | sort | uniq -c | sort -nr | awk '$1 > 10 {print $2, $1}'

הסבר:

  1. awk '{print $1}' access.log - מוציא את כתובת ה-IP מכל שורה.
  2. sort - ממיין את כתובת ה-IP בסדר אלפביתי.
  3. uniq -c - סופר את מספר ההופעות של כל כתובת IP.
  4. sort -nr - ממיין את התוצאות בסדר יורד לפי מספר ההופעות.
  5. awk '$1 > 10 {print $2, $1}' - מציג את כתובת ה-IP ומספר הגישות שלה, רק אם היו יותר מ-10 גישות.

פתרון לתרגיל 2:

המשימה היא למצוא שורות שבהן שם הלקוח מכיל את המילה "VIP", ולהדפיס את הערך של הלקוח (העמודה השנייה).

הפקודה הבאה תבצע את החיפוש:

grep "VIP" data.csv | cut -d',' -f2

הסבר:

  1. grep "VIP" data.csv - מוצא את השורות שמכילות את המילה "VIP".
  2. cut -d',' -f2 - חותך את השורה ומדפיס את העמודה השנייה (הסכום, במקרה הזה).

פתרון לתרגיל 3:

המשימה היא להמיר את התאריכים בקובץ report.txt מ-DD/MM/YYYY ל-YYYY-MM-DD.

הפקודה הבאה תבצע את ההמרה:

sed 's/\([0-9]\{2\}\)\/\([0-9]\{2\}\)\/\([0-9]\{4\}\)/\3-\2-\1/g' report.txt

הסבר:

  1. sed 's/.../.../g' - מחליף תבניות בקובץ.
  2. \([0-9]\{2\}\) - תופס בדיוק שתי ספרות (היום).
  3. \([0-9]\{2\}\) - תופס בדיוק שתי ספרות (החודש).
  4. \([0-9]\{4\}\) - תופס ארבע ספרות (השנה).
  5. \3-\2-\1 - מחליף את התאריכים לפורמט YYYY-MM-DD על ידי סידור מחדש של הקבוצות.

הפקודה תשנה את התאריכים בקובץ report.txt לפורמט החדש.