בחלק הזה שלנו סדרת פקודות Linux Awk, נבחן את אחת התכונות החשובות ביותר של Awk, שהיא עריכת שדות.
טוב לדעת זאת Awk מחלק באופן אוטומטי שורות קלט המסופקות לו לשדות, וניתן להגדיר שדה כמערכת תווים המופרדים משדות אחרים על ידי מפריד שדות פנימי.
אם אתה מכיר את יוניקס/לינוקס או יודע תכנות bash shell, אז כדאי שתדע איזה מפריד שדות פנימי (IFS) משתנה הוא. ברירת המחדל של IFS ב- Awk הן כרטיסייה ומרחב.
כך פועל הרעיון של הפרדת שדות Awk: כאשר הוא נתקל בקו קלט, על פי ה- IFS שהוגדר, קבוצת התווים הראשונה היא שדה אחד, שאליו ניגשים באמצעות $1, קבוצת התווים השנייה היא שדה שני, שאליו ניתן לגשת באמצעות $2, קבוצת התווים השלישית היא שדה שלוש, שאליו ניתן לגשת באמצעות $3 וכן הלאה עד קבוצת התווים האחרונה.
כדי להבין טוב יותר את העריכה הזו של שדה Awk, הבה נבחן את הדוגמאות להלן:
דוגמה 1: יצרתי קובץ טקסט בשם tecmintinfo.txt.
# vi tecmintinfo.txt. # חתול tecmintinfo.txt.
לאחר מכן משורת הפקודה, אני מנסה להדפיס את ראשון, שְׁנִיָה ו שְׁלִישִׁי שדות מהקובץ tecmintinfo.txt באמצעות הפקודה שלהלן:
$ awk '// {print $ 1 $ 2 $ 3}' tecmintinfo.txt TecMint.comisthe.
מהפלט למעלה, אתה יכול לראות כי התווים משלושת השדות הראשונים מודפסים על בסיס IFS מוגדר שהוא שטח:
$1
.$2
.$3
.אם שמת לב בפלט המודפס, ערכי השדה אינם מופרדים וכך מתנהגת ההדפסה כברירת מחדל.
כדי להציג את הפלט בצורה ברורה עם רווח בין ערכי השדה, עליך להוסיף (,)
מפעיל כדלקמן:
$ awk '// {הדפס $ 1, $ 2, $ 3; } 'tecmintinfo.txt TecMint.com הוא.
דבר אחד חשוב שיש לזכור ותמיד לזכור הוא כי השימוש ב- ($)
ב Awk שונה מהשימוש בו בסקריפטים של קליפות.
תחת סקריפטים של מעטפת ($)
משמש לגישה לערך המשתנים בזמן Awk($)
הוא משמש רק בעת גישה לתוכן של שדה אך לא לגישה לערך המשתנים.
דוגמה 2: הבה נבחן דוגמא אחת נוספת באמצעות קובץ המכיל מספר שורות הנקראות רשימת my_shoping.list.
ללא שם פריט_יחידה_מחיר מחיר. 1 עכבר #20,000 1 #20,000. 2 צג #500,000 1 #500,000. 3 RAM_Chips #150,000 2 #300,000. 4 Ethernet_Cables #30,000 4 #120,000
תגיד שרצית להדפיס מחיר ליחידה
מכל פריט ברשימת הקניות, יהיה עליך להריץ את הפקודה שלהלן:
$ awk '// {הדפס $ 2, $ 3}' my_shopping.txt שם פריט_יחידה_מחיר. עכבר 20,000. צג #500,000. RAM_Chips #150,000. Ethernet_Cables #30,000.
Awk יש גם א printf
הפקודה שעוזרת לך לעצב את הפלט שלך היא דרך נחמדה מכיוון שאתה יכול לראות שהפלט לעיל אינו ברור מספיק.
שימוש printf
לעצב פלט של שם הפריט ו מחיר ליחידה:
$ awk '// {printf " %-10s %s \ n", $ 2, $ 3}' my_shopping.txt שם פריט_יחידה_מחיר. עכבר 20,000. צג #500,000. RAM_Chips #150,000. Ethernet_Cables #30,000.
עריכת שדות חשובה מאוד בעת השימוש Awk כדי לסנן טקסט או מחרוזות, זה עוזר לך לקבל נתונים מסוימים בעמודות ברשימה. ותמיד זכור כי השימוש ב- ($)
מפעיל ב Awk שונה מזה של scripting shell.
אני מקווה שהמאמר היה מועיל לך ולכל מידע נוסף הנדרש או שאלות, תוכל לפרסם הערה בקטע ההערות.