Bash לכל שורה בקובץ

Bash Each Line File



ניתן להשתמש בלולאת For ב- Bash עם וריאציות שונות לביצוע משימות מרובות. וריאציה אחת כזו היא לכל שורה בקובץ שאחראית על קריאת כל השורות בקובץ. במאמר זה נדבר על שיטות השימוש עבור כל שורה בקובץ ב- Bash.

הערה: השיטות המוצגות להלן הודגמו ב- Ubuntu 20.04. עם זאת, הם גם יעבדו היטב עם כל הפצה אחרת של לינוקס.







שיטות שימוש עבור כל שורה בקובץ ב- Bash:

בשיטות אלה, נראה לך דוגמה שבה תוכל לקרוא כל שורה מתוך קובץ, ולאחר מכן תוכל להציג אותה במסוף או שתוכל אפילו לאחסן שורות אלה בקובץ אחר. הבה נבחן את שתי השיטות הללו.



שיטה מס '1: להצגת קווי הקריאה במסוף:

להצגת שורות הקובץ במסוף באמצעות כל שורה בקובץ, יהיה עליך לבצע את השלבים הבאים:



שלב 1: יצירת קובץ טקסט דמה:

קודם כל, עליך ליצור קובץ טקסט עם כמה נתונים אקראיים למען ההדגמה. למרות שניתן ליצור קובץ טקסט זה בכל מקום, עם זאת, מומלץ מאוד ליצור אותו בתיקיית הבית. לשם כך, לחץ על סמל מנהל הקבצים המודגש בתמונה המוצגת למטה:





  • יצירת קובץ טקסט דמה

    כעת לחץ לחיצה ימנית בכל מקום בתיקיית הבית ובחר באפשרות מסמך חדש מהתפריט שמופיע. לאחר מכן בחר באפשרות ריק מסמך. לאחר שנוצר מסמך ריק בתיקיית הבית שלך, ספק את השם שבחרת עבורו ואחריו הסיומת .txt. בדוגמה זו, קראנו לו בשם ForEachLine.txt.

  • יצירת קובץ טקסט דמה 2
    לחץ פעמיים על קובץ טקסט זה כדי לפתוח אותו ולאחר מכן הקלד בו כל טקסט אקראי כפי שמוצג בתמונה הבאה. לאחר ביצוע פעולה זו, שמור קובץ זה וסגור אותו.



  • יצירת קובץ טקסט דמה 3

    שלב 2: יצירת סקריפט הבש:

    כעת צור קובץ Bash באותו אופן בו יצרת את קובץ הטקסט בתיקיית הבית פרט לכך שהפעם עליך לספק את שמו ואחריו סיומת .sh במקום סיומת .txt. שמנו את קובץ ה- Bash שלנו בשם ForEachLine.sh אך תוכל לתת לו כל שם שתבחר.
    יצירת סקריפט הבש

    פתח קובץ זה על ידי לחיצה כפולה עליו ולאחר מכן הקלד את הסקריפט המוצג בתמונה למטה בקובץ הבש החדש שלך. כאן, השורה הראשונה נמצאת כדי להצביע על כך שהתסריט הבא הוא סקריפט Bash. פשוט יצרנו משתנה בשם File והקצנו לו את שם קובץ הטקסט כערכו, כלומר ForEachLine.txt. לאחר מכן יצרנו משתנה בשם Lines והשווינו אותו ל- $ (קובץ $ cat). כאן, פקודת החתול קוראת את התוכן של קובץ הטקסט שלנו וכאשר לפניו עומד סמל $, אז התוכן הנקרא על ידי פקודה זו יאוחסן במשתנה Lines. באופן זה, כל שורות הקובץ בשם ForEachLine.txt יאוחסנו במשתנה Lines. לאחר מכן יישמנו את לולאת ה- For שיש לה קו איטרציה. איטרטור זה עובד על משתנה Lines שיצרנו למעלה והוא יחזור על כל השורות אחת אחת. ואז בלוק הנעשה, פשוט הצגנו את כל השורות האלה במסוף על ידי שימוש בפקודת הד.
    יצירת סקריפט הבש 2

    שלב 3: הפעלת סקריפט הבש:

    כעת הפעל את הטרמינל באובונטו 20.04 ולאחר מכן הפעל בו את הפקודה הבאה כדי לבצע את הסקריפט Bash שנוצר למעלה:
    bash ForEachLine.sh
    הפעלת סקריפט הבש

    כאשר פקודה זו תגרום לביצוע סקריפט bash, תוכל לראות את כל השורות של קובץ הטקסט במסוף שלך כפי שמוצג בתמונה הבאה:
    הפעלת סקריפט הבש

    שיטה מס '2: לשמירת כל שורות הקריאה בקובץ אחר:

    בשיטה זו, שינינו מעט את סקריפט הבש שנוצר בשיטה שלמעלה לשמירת כל שורות הקריאה בקובץ טקסט חדש במקום להציג אותן במסוף. לשם כך, בצע את השלבים המוזכרים להלן:

    שלב 1: שינוי סקריפט הבש שנוצר למעלה והפעלתו:

    פתח את סקריפט Bash שיצרת בשיטה למעלה ושנה אותו כפי שמוצג בתמונה הבאה. פשוט הוספנו את הסמל >> ואחריו שם קובץ חדש לאחר פקודת ההד בתוך הבלוק עשה. שינוי זה ישמור את כל שורות הקריאה בקובץ טקסט חדש במקום להציג אותן במסוף. כעת הפעל שוב את סקריפט Bash באמצעות הטרמינל עם הפקודה bash ואחריו שם קובץ Bash. הפעם כאשר תסריט Bash יפעל, הוא ייצור קובץ טקסט חדש ששמו במקרה זה הוא NewFile.txt.
    שינוי סקריפט הבש שנוצר מעל והפעלתו 1

    שלב 2: גישה לקובץ הטקסט החדש שנוצר:

    כדי לוודא אם כל שורות הקריאה נשמרו בקובץ הטקסט החדש, תוכל פשוט להציג את תוכן הקובץ על ידי הפעלת הפקודה הבאה במסוף שלך:
    חתול NewFile.txt
    גישה לקובץ הטקסט החדש שנוצר
    הפלט המוצג בתמונה למטה יבטיח לך שכל שורות הקריאה הועתקו לקובץ הטקסט החדש.
    גישה לקובץ הטקסט החדש שנוצר 2

    סיכום:

    בדרך זו, תוכל להשתמש בכל שורה בקובץ כדי לקרוא את כל שורות הקובץ ולאחר מכן לתפעל אותה בעזרת שורות אלה. בדיוק דיברנו על שני התרחישים הבסיסיים במאמר זה, עם זאת, אתה יכול אפילו להשתמש בלולאה זו לבעיות מורכבות יותר.