לינוקס : עיבוד טקסט מתקדם AWK

כלי זה נמצא הסטורית וטכנית בטווח שבין sed (מדריך בדרך https://www.gnu.org/software/sed/ ) לבין perl (שווה ללמוד https://www.perl.org )

תאורו , כפי שניתן לראות מתאורה בעמוד ההסבר man -k awk

"awk – pattern scanning and processing language"

תכלס , למה זה משמש , אמנם כולנו משתמשים ב egrep כל יום למעשה , בחיפושים שונים , אם בלוגים , ועם בנתונים שונים , אך לעיתים נרצה לעשות חיפוש חכם יותר , אך עדיין ללא מאמץ (יחסית)

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

ותציג לי אותם עם כותרת ברורה , ולפי הסדר מהגדול לקטן , זו כמובן רק דוגמא אשר מדגימה את היכולות הגמישות יותר של הכלי מאשר למשל egrep

אני חושב שזו לא תהיה הגזמה אפילו להשוותו ממש לאקסל של שורת הפקודה

התחבר הבסיס הוא :

awk -F: '{ print $1 }' /etc/passwd

נסביר את התחביר

awk הפקודה

-F: השדה המפריד , במקרה הזה : , זה לא חובה , במידה ולא נציין , השדה המפריד יהיה כבררת מחדש רווח

'{ print $1 }' צורת התצוגה , הפורמט

/etc/passwd קובץ הנתונים שעליו אנו עובדים , זו כמובן רק דוגמא

נבחן מספר דוגמאות אשר יפשטו את העניין

נכין קובץ דמה , לצורך הדוגמא , נוכל להציגו על ידי cat demofile.txt

או כמתבקש במקרה הזה , באמצעות awk , הצגת כל הקובץ , ללא ביצוע כל פעולה , תתבצע על ידי 'awk '{print $0}

ניתן להשתמש בפרמטרים

$0 כל השורה , $1 הפרמטר ה 1 , $2 המפרמטר ה 2 , וכו , הרעיון ברור

פרמטרים מיוחדים שמובנים בשפה :

NR: שומר את מספר השורות בקובץ

NF: שומר את מספר האוביקטים בכל שורה

FS: שומר את התו המפריד , בררת המחדל היא רוח .

RS: שומר את התו המפריד בין שורה לשורה , בררת המחדל ה n/

נראה מספר דוגמאות , שידגימו את אופן השימוש

דוגמא – הדפס את עיר הבירה , ואת מי שגר בעיר הספציפית , הוסף מילה הסבר (עיצוב/פורמט):

כפי שניתן לראות ,הוספנו טקסט שיוצס פלט ברור יותר , כמו כן אנו רואים שניתן להדפיס את הפרמטרים בכל סדר שבוא אנו חפצים

בנוסף , השתמשנו בפרמטר NF על מנת להדפיס את הפרמטר האחרון , דבר שמאוד עוזר כאשר אנו לא יודעים כמה פרמטרים יש

דוגמא , הדפס רק את מי שהשכר שלו גדול מ 14

בואו נהיה נחמדים , מי שמרויח יותר יותר מ 14 , יקבל בונוס של 20 אחוז (במקרה הזה , לא משנים את הערך , רק מדפיסים את השינוי)

ודוגמא ליכולת לשימוש בלולאה , חישוב סכום בריבוע

וזה רק טעימה מהיכולות של awk , ניתן לראות את התיעוד המלא באתר הרשמי של הפרויקט : https://www.gnu.org/software/gawk/manual/gawk.html

כתיבת תגובה

האימייל לא יוצג באתר. שדות החובה מסומנים *

CAPTCHA