למד את הפקודה לינוקס - gawk

שֵׁם

gawk - דפוס סריקה ועיבוד שפה

תַקצִיר

gawk [POSIX או אפשרויות סגנון גנו] - קובץ קובץ [ - ] קובץ ...
gawk [POSIX או אפשרויות סגנון גנו] [ - ] קובץ טקסט של טקסט ...

pgawk [POSIX או אפשרויות סגנון גנו] -F קובץ תוכנית [ - ] קובץ ...
pgawk [POSIX או אפשרויות סגנון גנו] [ - ] קובץ טקסט לתוכנה ...

תיאור

Gawk הוא יישום גנו של שפת התכנות AWK. הוא תואם להגדרת השפה בתקן POSIX 1003.2 Command Language and Utilities. גרסה זו בתורו מבוססת על התיאור של שפת תכנות AWK , על ידי Aho, Kernighan, ו - Weinberger, עם התכונות הנוספות הנמצאות בגרסה System V Release 4 של UNIX awk . Gawk מספק גם הרחבות בל האחרונות Lab מעבדות, מספר הרחבות ספציפיות גנו.

Pgawk הוא גרסה של פרופיל gawk . זה זהה בכל דרך כדי gawk , אלא תוכניות לרוץ לאט יותר, והוא מייצר באופן אוטומטי פרופיל ביצוע בקובץ awkprof.out כאשר נעשה. ראה את האפשרות --profile , להלן.

שורת הפקודה מורכבת מאפשרויות להתרפק על עצמה, את טקסט התוכנית AWK (אם לא מסופק באמצעות האפשרויות - f או - file ), ואת הערכים להיות זמינים ARGC ו ARGV מוגדרים מראש משתנים AWK.

פורמט אפשרות

אפשרויות Gawk עשויות להיות אופציונליות של POSIX אופציונליות אחת, או אופציות ארוכות בסגנון גנו. אפשרויות POSIX מתחילות באופציה אחת `` - '', בעוד שהאפשרויות הארוכות מתחילות ב - `` '' '. אפשרויות ארוכות מסופקות הן עבור תכונות ספציפיות ל- GNU והן עבור תכונות המנדט של POSIX.

בעקבות תקן POSIX, אפשרויות אופציונליות של gawk מסופקות באמצעות ארגומנטים לאפשרות -W . אפשרויות מרובות -WW עשויות להיות מסופקות לכל אפשרות -W יש אפשרות ארוכה תואמת, כמפורט להלן. ארגומנטים לאפשרויות ארוכות מצטרפים לאפשרות באמצעות סימן = , ללא רווחים מתערבים, או שיוצגו בארגומנט שורת הפקודה הבאה. אפשרויות ארוכות יכולות להיות מקוצרות, כל עוד הקיצור נשאר ייחודי.

אפשרויות

Gawk מקבל את האפשרויות הבאות, המפורטות בסדר אלפביתי.

-F fs

- ff-separator fs השתמש ב- fs עבור מפריד שדה הקלט (הערך של המשתנה המוגדר מראש של FS ).

-רוב ier 49

--assign var = val הקצה את ערך הערך למשתנה var , לפני ביצוע התוכנית. ערכים משתנים אלה זמינים לחלון BEGIN של תוכנית AWK.

- קובץ תוכנית

- file program file קרא את מקור התוכנית AWK מקובץ קובץ הקובץ , במקום מארגומנט שורת הפקודה הראשונה. ניתן להשתמש באפשרויות מרובות -f (או -file ).

-MN NNN

-mr NNN הגדר מגבלות זיכרון שונות לערך NNN . דגל F קובע את המספר המרבי של שדות, ואת דגל r קובע את גודל הרשומה המרבי. אלה שני הדגלים ואת האפשרות מ הם מן המעבדות בל גרסה מחקר של UNIX awk . הם מתעלמים על ידי gawk , שכן gawk אין גבולות מוגדרים מראש.

-Wlass

-W מסורתי

- comppat

- הפעלה מסורתית במצב תאימות . במצב תאימות, gawk מתנהג באופן זהה ל- UNIX awk ; אף אחד מהתוספים הספציפיים ל- GNU אינו מוכר. השימוש - מסורתי הוא העדיף על פני צורות אחרות של אפשרות זו. לקבלת מידע נוסף, ראה GNU EXTENSIONS להלן.

-Ww copyleft

-WW זכויות יוצרים

--copyleft

--copyright הדפס את הגרסה הקצרה של הודעת המידע של GNU בפלט הסטנדרטי וביציאה בהצלחה.

-WW משתני dump [ = קובץ ]

- dump-variable [ = file ] הדפס רשימה ממוינת של משתנים גלובליים, הסוגים והערכים הסופיים שלהם לקובץ . אם לא סופק קובץ , gawk משתמש בקובץ בשם awkvars.out בספריה הנוכחית.

לאחר רשימה של כל המשתנים הגלובליים היא דרך טובה לחפש שגיאות טיפוגרפיות בתוכניות שלך. אתה גם להשתמש באפשרות זו אם יש לך תוכנית גדולה עם הרבה פונקציות, ואתה רוצה להיות בטוח כי הפונקציות שלך לא בטעות להשתמש משתנים גלובליים, כי אתה מתכוון להיות מקומי. (זוהי טעות קלה במיוחד לעשות עם שמות משתנים פשוטים כמו i , j , וכן הלאה).

- עזרה

-W השימוש

--עֶזרָה

--usage הדפס סיכום קצר יחסית של האפשרויות הזמינות על הפלט הסטנדרטי. (בהתאם לתקני קידוד גנו , אפשרויות אלה גורמות ליציאה מיידית מוצלחת).

-Wint מוך [ = קטלני ]

- לינט [ = קטלני ] לספק אזהרות על מבנים כי הם מפוקפקים או לא ניידים ליישומים אחרים AAWK. עם טיעון אופציונלי של אזהרות מוך קטלניות , הופכות לשגיאות קטלניות. זה עשוי להיות דרסטי, אבל השימוש בו בהחלט לעודד את הפיתוח של תוכניות AWK נקי.

-Wew מוך

- lint-old לספק אזהרות על מבנים שאינם ניידים לגרסה המקורית של Unix awk .

-W gen-po

- gen-po סרוק ולנתח את התוכנית AWK, וליצור קובץ בפורמט GNU .po על פלט סטנדרטי עם ערכים עבור כל המחרוזות להתאמה לתכנית. התוכנית עצמה לא מבוצעת. עיין בהפצת gettext של GNU לקבלת מידע נוסף על קובצי .po .

-W שאינם נתונים עשרוניים

- לא עשרוני נתונים לזהות ערכים אוקטליים ו הקסדצימלי בנתוני קלט. השתמש באפשרות זו בזהירות רבה!

- פוסקס

--posix מצב זה מפעיל מצב תאימות , עם ההגבלות הנוספות הבאות:

*

\ x לברוח רצפים אינם מזוהים.

*

רק החלל והכרטיסייה פועלים כמפרידי שדות כאשר FS מוגדר לשטח אחד, חדש לא.

*

אתה לא יכול להמשיך שורות לאחר ? ו.

*

הפונקציה שם נרדף עבור פונקציית מילת המפתח אינה מזוהה.

*

לא ניתן להשתמש במפעילים ** וב- ** = במקום ^ ו- ^ ^ .

*

הפונקציה fflush () אינה זמינה.

-W פרופיל [ = prof_file ]

--profile [ = prof_file ] שלח נתונים Profiling ל prof_file . ברירת המחדל היא awkprof.out . כאשר לרוץ עם gawk , הפרופיל הוא רק גרסה "די מודפס" של התוכנית. כאשר לרוץ עם pgawk , הפרופיל מכיל ספירת ביצוע של כל משפט בתוכנית בשוליים השמורים וספירת פונקציות פונקציה עבור כל פונקציה המוגדרת על ידי המשתמש.

-W מחדש מרווח

- inter-interval לאפשר את השימוש בביטויים המרווחים בהתאמת הביטוי הרגיל (ראה ביטויים רגולריים , בהמשך). ביטויים המרווחים לא היו זמינים באופן מסורתי בשפת AWK. תקן POSIX הוסיף אותם, לעשות awk ו egrep עקבית אחד עם השני. עם זאת, השימוש בהם עשוי לשבור תוכניות AWK ישנות, כך ש- gawk מספק אותן רק אם הן מתבקשות עם אפשרות זו, או כאשר -פויקס מוגדר.

-W מקור תוכנית טקסט

- textource -text טקסט השתמש בתוכנה-טקסט כקוד המקור של תוכנית AWK. אפשרות זו מאפשרת שילוב קל של פונקציות הספרייה (בשימוש באמצעות האפשרויות f - ו - file ) עם קוד המקור שהוזן על שורת הפקודה. זה מיועד בעיקר בינוני עד גדול תוכניות AWK המשמש סקריפטים פגז.

-W גרסה

- גירסת הדפסה גרסת מידע עבור עותק מסוים זה של gawk על הפלט הסטנדרטי. זה שימושי בעיקר כדי לדעת אם את העותק הנוכחי של gawk על המערכת שלך מעודכן לגבי מה קרן התוכנה החופשית היא מפיצה. תכונה זו שימושית גם בעת דיווח על באגים. (בהתאם לתקני קידוד גנו , אפשרויות אלה גורמות ליציאה מיידית מוצלחת).

- ציון סוף האפשרויות. זה שימושי כדי לאפשר טיעונים נוספים לתוכנית AWK עצמה להתחיל עם `` '' '. זה בעיקר עקביות עם הטיעון ניתוח האמנה בשימוש על ידי רוב תוכניות POSIX אחרים.

במצב תאימות, כל אפשרות אחרת מסומנת כבלתי חוקית, אך מתעלמים ממנה. בפעולה רגילה, כל עוד טקסט התוכנית סופק, אפשרויות לא ידועות מועברות לתוכנית AWK במערך ARGV לעיבוד. זה שימושי במיוחד להפעלת תוכניות AWK באמצעות מנגנון התרגום "#!".

ביצוע תוכנית AWK

תוכנית AWK מורכבת מרצף של הצהרות דפוס פעולה והגדרות פונקציונליות אופציונלית.

דפוס { Action Statement }

שם פונקציה ( רשימת פרמטרים ) { הצהרות }

Gawk הראשון קורא את מקור התוכנית מקובץ התוכנית (ים) אם צוין, מתוך ארגומנטים ל - source , או מן הארגומנט הראשון שאינו אופציונלי בשורת הפקודה. האפשרויות -f ו- - source יכולות לשמש מספר פעמים בשורת הפקודה. Gawk קורא את טקסט התוכנית כאילו כל קובץ התוכנית של טקסט שורת הפקודה טקסט היו משורשרים יחד. זה שימושי עבור בניית ספריות של פונקציות AWK, מבלי לכלול אותם בכל תוכנית חדשה AWK המשתמשת בהם. הוא גם מספק את היכולת לערבב פונקציות ספריה עם תוכניות שורת פקודה.

משתנה הסביבה AWKPATH מציין נתיב חיפוש שיש להשתמש בו בעת איתור קבצי מקור בשם האפשרות. אם משתנה זה אינו קיים, נתיב ברירת המחדל הוא ".: / Usr / local / share / awk" . (הספרייה בפועל עשויה להשתנות, בהתאם לאופן שבו נבנה gawk והתקנה.) אם שם קובץ שניתן לאפשרות f מכיל תו "/", לא מתבצעת חיפוש נתיב.

Gawk מבצעת תוכניות AWK בסדר הבא. ראשית, כל הקצאות המשתנים שצוין באמצעות אפשרות -v מבוצעות. הבא, gawk הידור התוכנית לתוך צורה פנימית. לאחר מכן, gawk מבצעת את הקוד בבלוקים של BEGIN (אם בכלל), ולאחר מכן ממשיך לקרוא כל קובץ בשם במערך ARGV . אם אין קבצים בשם בשורת הפקודה, gawk קורא את הקלט הסטנדרטי.

אם שם הקובץ בשורת הפקודה כולל את הטופס var = val הוא מטופל כמשימה משתנה. המשתנה var יקצה ערך val . (זה קורה לאחר שכל בלוק של BEGIN הופעל.) הקצאת משתנה שורת הפקודה היא שימושית ביותר להקצאה דינמית של ערכים למשתנים ש- AWK משתמש בהם כדי לשלוט באופן הזנה של קלט לשדות ורשומות. זה גם שימושי לשליטה המדינה אם עובר מרובים נדרשים על קובץ נתונים יחיד.

אם הערך של אלמנט מסוים של ARGV ריק ( "" ), gawk מדלג על זה.

עבור כל רשומה קלט, gawk בדיקות כדי לראות אם זה תואם כל דפוס בתוכנית AWK. עבור כל תבנית שמתאימה הרשומה, הפעולה המשויכת מתבצעת. הדפוסים נבדקים לפי סדר הופעתם בתוכנית.

לבסוף, לאחר כל קלט הוא מותש, gawk מבצעת את הקוד בבלוק END (ים) (אם בכלל).

משתנים, רשומות ושדות

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

רשומות

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

שדות

כמו כל שיא קלט הוא קרא, gawk מפצל את הרשומה לשדות , תוך שימוש בערך המשתנה FS כמפריד השדה. אם FS הוא תו בודד, השדות מופרדים על ידי תו זה. אם FS הוא מחרוזת null, כל תו בודד הופך לשדה נפרד. אחרת, FS צפוי להיות ביטוי קבוע מלא. במקרה המיוחד זה FS הוא חלל אחד, שדות מופרדים על ידי ריצות של רווחים ו / או כרטיסיות ו / או שורות חדשות. (אבל לראות את הדיון של --posix , להלן). הערה: הערך של IGNORECASE (ראה להלן) משפיע גם על אופן חלוקת השדות כאשר FS הוא ביטוי רגיל, וכיצד מופרדים הרשומות כאשר RS הוא ביטוי רגיל.

אם המשתנה FIELDWIDTHS מוגדר לרשימת מספרים מופרדים בחלל, כל שדה צפוי להיות בעל רוחב קבוע, ו gawk מפצל את הרשומה באמצעות רוחב שצוין. הערך של FS הוא התעלם. הקצאת ערך חדש ל- FS מחליפה את השימוש ב- FIELDWIDTHS ומשחזרת את התנהגות ברירת המחדל.

כל שדה ברשומה הקלט עשוי להיות מפנה על ידי המיקום שלו, $ 1 , $ 2 , וכן הלאה. $ 0 הוא השיא כולו. שדות לא צריך להיות הפניה על ידי קבועים:

n = 5
- $ n

מדפיס את השדה החמישי ברשומת הקלט.

המשתנה NF מוגדר למספר השדות הכולל ברשומת הקלט.

הפניות לשדות שאינם קיימים (כלומר שדות לאחר NF $ ) מייצרים את מחרוזת ה- null. עם זאת, ההקצאה לשדה שאינו קיים (לדוגמה, $ (NF + 2) = 5 ) מגדילה את הערך של NF , יוצרת שדות מתערבים עם מחרוזת null כערך שלהם, וגורמת לערך מחדש של $ 0 , עם את השדות להיות מופרדים על ידי הערך של OFS . הפניות לשדות ממוספרים שליליים גורמים לשגיאה חמורה. הפחתת NF גורמת לאיבוד ערכי השדות שעברו את הערך החדש, וערך $ 0 להיות מחודש, כאשר השדות מופרדים לפי הערך של OFS .

הקצאת ערך לשדה קיים גורמת שכל הרשומה תיבנה מחדש עם הפניה של $ 0 . באופן דומה, הקצאת ערך ל- $ 0 גורמת לכך שהרשומה תוצג מחדש ותיצור ערכים חדשים עבור השדות.

מובנים מובנים

המשתנים המובנים של Gawk הם:

ARGC

מספר הארגומנטים של שורת הפקודה (אינו כולל אפשרויות עבור gawk , או מקור התוכנית).

ARGIND

המדד ב- ARGV של הקובץ הנוכחי המעובד.

ARGV

מערך טיעונים של שורת הפקודה. המערך הוא באינדקס מ 0 ל ARGC - 1. דינמי לשנות את התוכן של ARGV יכול לשלוט על הקבצים המשמשים לנתונים.

BINMODE

במערכות שאינן POSIX, מציין שימוש במצב 'בינארי' עבור כל קובץ קלט / פלט. ערכים מספריים של 1, 2 או 3 מציינים שקובצי קלט, קובצי פלט או כל הקבצים, בהתאמה, צריכים להשתמש בינארי I / O. ערכי מחרוזת של "r" או "w" מציינים שקובצי קלט, או קובצי פלט, בהתאמה, צריכים להשתמש בינארית I / O. ערכי מחרוזת של "rw" או "wr" מציינים כי על כל הקבצים להשתמש בינארי I / O. כל ערך מחרוזת אחר מטופל כ- "rw" , אך יוצר הודעת אזהרה.

קונבנקט

פורמט ההמרה של המספרים, "% .6g" , כברירת מחדל.

אנוירון

מערך המכיל את ערכי הסביבה הנוכחית. המערך מסודר על ידי משתני הסביבה, כאשר כל אלמנט הוא הערך של משתנה זה (לדוגמה, ENVIRON ["HOME"] עשוי להיות / home / arnold ). שינוי מערך זה אינו משפיע על הסביבה הנראית על ידי תוכניות אשר gawk spawns באמצעות הפניה מחדש או את המערכת () פונקציה.

ERRNO

אם מתרחשת שגיאת מערכת או עושה ניתוב מחדש עבור getline , במהלך קריאה עבור getline , או במהלך סגירה () , אז ERRNO יכיל מחרוזת המתארת ​​את השגיאה. הערך כפוף לתרגום בשפות שאינן אנגלית.

תחומים

רשימה נפרדת של שדות רוחב פס. כאשר מוגדר, gawk מנתח את הקלט לשדות של רוחב קבוע, במקום להשתמש בערך המשתנה FS כמפריד השדה.

שם קובץ

שם קובץ הקלט הנוכחי. אם לא צוין קבצים בשורת הפקודה, הערך של FILENAME הוא `` - ''. עם זאת, FILENAME אינו מוגדר בתוך הבלוק BEGIN (אלא אם כן נקבע על ידי ה- lineline ).

FNR

מספר רשומת הקלט בקובץ הקלט הנוכחי.

FS

מפריד שדה הקלט, רווח כברירת מחדל. ראה שדות , לעיל.

IGNORECASE

שולט ברגישות למקרה של כל ביטוי רגיל ופעולות מחרוזת. אם ל- IGNORECASE יש ערך שאינו אפס, אז השוואות מחרוזות והתאמת תבניות בכללים, פיצול שדות עם FS , הרשומה המפרידה עם RS , ביטוי רגיל תואם עם ~ ~ ~ , ו- gensub () , gsub () , אינדקס () , התאמה () , פיצול () , ו sub () מובנית פונקציות כל להתעלם במקרה בעת ביצוע פעולות ביטוי רגיל. הערה: מחיקת המערכים אינה מושפעת, ולא הפונקציה asort () .

לכן, אם IGNORECASE אינו שווה לאפס, / aB / מתאים לכל המחרוזות "ab" , "aB" , "Ab" ו- "AB" . כמו עם כל המשתנים AWK, הערך ההתחלתי של IGNORECASE הוא אפס, ולכן כל ביטוי רגיל פעולות מחרוזת הם רגישים במקרה. תחת Unix, כל ערכת התווים הלטינית 1 ISO 8859-1 משמשת בעת התעלמות מהמקרה.

מוֹך

מספק שליטה דינמית של האפשרות --lint מתוך תוכנית AWK. כאשר נכון, gawk הדפסים אזהרות מוך. כאשר שקר, זה לא. כאשר מוקצה ערך מחרוזת "קטלנית" , אזהרות מוך הופכות לשגיאות קטלניות, בדיוק כמו - lint = קטלני . כל ערך אחר פשוט מדפיס אזהרות.

NF

מספר השדות ברשומה הנוכחית.

NR

המספר הכולל של רשומות קלט שנצפו עד כה.

OFMT

פורמט פלט עבור מספרים, "% .6g" , כברירת מחדל.

OFS

מפריד שדה הפלט, רווח כברירת מחדל.

ORS

הפלט להקליט את הפלט, כברירת מחדל קו חדש.

PROCINFO

האלמנטים של מערך זה מספקים גישה למידע אודות תוכנית AWK הפועלת. במערכות מסוימות, עשויים להיות אלמנטים במערך, "group1" דרך " n " n עבור קבוצה כלשהי, שהיא מספר הקבוצות המשלימות שיש לתהליך. השתמש באופרטור in כדי לבדוק את האלמנטים האלה. האלמנטים הבאים מובטחים להיות זמינים:

PROCINFO ["egid"]

את הערך של callegid (2) להתקשר המערכת.

PROCINFO ["euid"]

את הערך של שיחת המערכת geteuid (2).

PROCINFO ["FS"]

"FS" אם פיצול השדה עם FS הוא למעשה, או "FIELDWIDTHS" אם פיצול השדה עם FIELDWIDTHS הוא למעשה.

PROCINFO ["gid"]

את הערך של getgid (2) להתקשר המערכת.

PROCINFO ["pgrpid"]

מזהה קבוצת התהליך של התהליך הנוכחי.

PROCINFO ["pid"]

את מזהה התהליך של התהליך הנוכחי.

PROCINFO ["ppid"]

את תהליך ההורה מזהה של התהליך הנוכחי.

PROCINFO ["uid"]

את הערך של getuid (2) להתקשר המערכת.

RS

מפריד הרשומה הקלט, כברירת מחדל קו חדש.

RT

הרשומה. Gawk מגדיר RT לטקסט הקלט התואם את התו או הביטוי הרגיל שצוין על ידי RS .

RSTART

האינדקס של התו הראשון מותאם לפי התאמה () ; 0 אם אין התאמה. (משמעות הדבר היא כי מדדי אופי להתחיל באחת.)

RLENGTH

אורך המחרוזת שתואם לפי ההתאמה () ; -1 אם אין התאמה.

SUBSEP

הדמות המשמשת להפריד בין מספר תחתיבים באלמנטים במערך, כברירת מחדל "\ 034" .

TEXTDOMAIN

תחום הטקסט של תוכנית AWK; השתמש כדי למצוא את התרגומים המקוונים עבור string's string.

מערכים

מערכים מודפסים עם ביטוי בין סוגריים מרובעים ( [ ו ] ). אם הביטוי הוא רשימת ביטוי ( expr , expr ...), אזי מחרוזת המערך היא מחרוזת המורכבת בשרשור של הערך (מחרוזת) של כל ביטוי, מופרד על ידי הערך של משתנה SUBSEP . מתקן זה משמש כדי לדמות מערכים ממדים כפול. לדוגמה:

i = "A"; j = "B"; k = "C"
x [i, j, k] = "שלום, עולם \ n"

מקצה את המחרוזת "שלום, עולם \ n" אל האלמנט של המערך x אשר מסומן על ידי המחרוזת "A \ 034B \ 034C" . כל המערכים ב- AWK הם אסוציאטיביים, כלומר, על ידי ערכי מחרוזת.

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

אם (val מערך) מערך הדפסה [val]

אם למערך יש מספר תחתיבים, השתמש ב- (i, j) במערך .

ב לבנות יכול לשמש גם עבור לולאה כדי לחזור על כל האלמנטים של מערך.

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

משתנה הקלדה המרה

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

כדי לאלץ משתנה להיות מטופל כמספר, הוסף 0 אליו; כדי לאלץ אותו להיות מטופל כמחרוזת, לשרשר אותו עם מחרוזת null.

כאשר מחרוזת חייבת להיות מומרת למספר, ההמרה מתבצעת באמצעות strtod (3). מספר מומרת למחרוזת על ידי שימוש בערך CONVFMT כמחרוזת פורמט עבור sprintf (3), עם הערך המספרי של המשתנה כארגומנט. עם זאת, למרות שכל המספרים ב- AWK הם נקודה צפה, ערכים אינטגרליים יומרו תמיד כמספרים שלמים. לפיכך, נתון

CONVFMT = "% 2.2f" a = 12 b = a "

המשתנה b יש ערך מחרוזת של "12" ולא "12.00" .

Gawk מבצע השוואות כדלקמן: אם שני משתנים מספריים, הם משווים באופן מספרי. אם ערך אחד הוא מספרי והשני בעל ערך מחרוזת שהוא מחרוזת מספריים, אזי גם השוואות נעשות באופן מספרי. אחרת, הערך המספרי יומר למחרוזת ויבוצע השוואת מחרוזות. שתי מחרוזות מושוות, כמובן, כמחרוזות. שים לב כי תקן POSIX מיישם את המושג "מחרוזת מספריים" בכל מקום, אפילו לקביעות מחרוזות. עם זאת, זה לא נכון בבירור, ו gawk לא עושה את זה. (למרבה המזל, זה קבוע בגירסה הבאה של התקן.)

שים לב שקבועי מחרוזות, כגון "57" , אינם מחרוזות מספריות, הם מחרוזות מחרוזת. הרעיון של 'מחרוזת מספריים' 'חל רק על שדות, קלט שורה , אלמנטים FILENAME , ARGV , אלמנטים ENVIRON ואלמנטים של מערך שנוצר על ידי פיצול () שהם מחרוזות מספריות. הרעיון הבסיסי הוא קלט המשתמש , רק קלט המשתמש, זה נראה מספרי, צריך להתייחס ככה.

למשתנים לא מסודרים יש את הערך המספרי 0 ואת ערך המחרוזת "" (null, או ריק, string).

אוקטלים והקסדצימליים

החל מגרסה 3.1 של gawk, אתה יכול להשתמש C- בסגנון אוקטלי הקסדצימלי בקוד המקור של תוכנית AWK שלך. לדוגמה, הערך האוקטלי 011 שווה לערך 9 , והערך ההקסדצימלי 0x11 שווה לערך העשרוני 17.

מחרוזות מיתרים

מחרוזות מחרוזות ב- AWK הן רצפים של תווים המקיפים בין מרכאות כפולות ( " ) .במחרוזות, רצפים של בריחה מסוימים מזוהים, כמו ב C. אלו הם:

\\

ריקבון מילולי.

הדמות '' התראה ''; בדרך כלל את אופי ASCII BEL.

\ b

.

\ f

טופס להאכיל.

\ n

שורה חדשה.

\ r

לחזור המרכבה.

\ t

הכרטיסייה האופקית.

\ v

הכרטיסייה אנכית.

\ x hex ספרות

הדמות המיוצגת על ידי מחרוזת ספרות הקסדצימליות לאחר \ x . כמו ב- ANSIC, כל הספרות הקסדצימליות הבאות נחשבות לחלק מרצף הבריחה. (תכונה זו אמורה לספר לנו משהו על עיצוב שפה על ידי הוועדה.) לדוגמה, "\ x1B" הוא תו ASCIIESC (בריחה).

\ ddd

התו המיוצג על ידי רצף 1-, 2, או 3 ספרות של ספרות אוקטליות. לדוגמה, "\ 033" הוא תו ASCII ESC (בריחה).

\ c

אופי מילולי ג .

רצפי הבריחה עשויים לשמש גם בתוך ביטויים רגולריים קבועים (לדוגמה, / [\ t \ f \ n \ r \ v] / תואם תווים לבנים).

במצב תאימות, התווים המיוצגים על ידי רצפים בריחה אוקטלית והקסדצימלית מטופלים, פשוטו כמשמעו, כאשר משתמשים קבועים ביטוי קבוע. לכן, / a \ 52b / שווה ל- / a * * b / .

דפוסי פעולה

AWK היא שפה מוכוונת שורה. הדפוס מגיע קודם, ואז הפעולה. הצהרות פעולה סגורות ב- { and } . ייתכן שהתבנית חסרה, או שהפעולה עלולה להיות חסרה, אבל, כמובן, לא את שניהם. אם התבנית חסרה, הפעולה מבוצעת עבור כל רשומה יחידה של קלט. פעולה חסרה שווה ל

{ הדפס }

אשר מדפיס את הרשומה כולה.

ההערות מתחילות עם תו '#' ', וממשיכות עד סוף השורה. ניתן להשתמש בקווים ריקים להפריד בין ההצהרות. בדרך כלל, הצהרה מסתיימת עם שורה חדשה, עם זאת, זה לא המקרה עבור השורות מסתיימת ב ',',, { , ? , : , && , או || . קווים המסתיימים לעשות או אחר יש גם את ההצהרות שלהם המשיך באופן אוטומטי על השורה הבאה. במקרים אחרים, ניתן להמשיך בשורה על ידי סיומה ב - ', ובמקרה זה תתעלם מהקו החדש.

ניתן להוסיף מספר משפטים בשורה אחת על-ידי הפרדתם ל- ``; ''. זה חל הן על הצהרות בתוך חלק הפעולה של זוג דפוס פעולה (המקרה הרגיל), וכן את דפוס פעולה הצהרות עצמם.

דפוסי

דגמי AWK עשויים להיות אחד מהבאים:

תחילת סוף / ביטוי רגיל / ביטוי ביטוי יחסיים דפוס דפוס & | | תבנית דפוס תבנית : תבנית ( דפוס ) ! דפוס 12 , דפוס

BEGIN ו- END הם שני סוגים מיוחדים של תבניות שאינן נבדקות כנגד הקלט. חלקי הפעולה של כל תבניות BEGIN ממוזגות כאילו כל ההצהרות נכתבות בבלוק BEGIN יחיד. הם להורג לפני כל קלט הוא קרא. באופן דומה, כל הבלוקים של END ממוזגים, ומבוצעים כאשר כל הקלט הוא מותש (או כאשר מופעלת הודעת יציאה ). לא ניתן לשלב דפוסים של BEGIN ו- END עם דפוסים אחרים בביטויי דפוס. לתבניות BEGIN ו- END אין חלקי פעולה חסרים.

עבור / ביטוי / תבניות רגילות , ההצהרה המשויכת מתבצעת עבור כל רשומת קלט המתאימה לביטוי הרגיל. ביטויים סדירים זהים לאלו ב- egrep (1), והם מסוכמים להלן.

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

&& , || , ו ! המפעילים הם לוגיים, לוגיים או, ולא הגיוני לא, בהתאמה, כמו ב C. הם עושים הערכה במעגל קצר, כמו גם ב C, ומשמשים שילוב של ביטויים דפוס פרימיטיבי יותר. כמו ברוב השפות, ניתן להשתמש בסוגריים כדי לשנות את סדר ההערכה.

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

תבנית 1 , pattern2 של הביטוי נקרא דפוס טווח . הוא תואם את כל רשומות הקלט החל מרשומה התואמת ל- Pattern1 , וממשיך עד לרשומה התואמת ל- pattern2 , כולל. זה לא לשלב עם כל סוג אחר של ביטוי דפוס.

ביטויים רגולריים

ביטויים רגולריים הם סוג המורחב נמצא egrep . הם מורכבים דמויות כדלקמן:

c

תואם את הלא metacharacter c .

\ c

תואם את אופי מילולי ג .

.

תואם כל תו כולל newline.

^

תואם את תחילתה של מחרוזת.

$

תואם לקצה המחרוזת.

[ abc ... ]

רשימת התווים, תואם כל התווים abc .....

[^ abc ... ]

רשימת תווים מנוגדים, תואמת כל תו למעט abc .

r1 | r2

בחירה: התאמות של r1 או r2 .

r1r2

שרשור: התאמת r1 , ולאחר מכן r2 .

ייצור

תואם אחד או יותר r .

ייצור

תואם לאפס או יותר.

r?

תואם אפס או אחד r .

( r )

קיבוץ: התאמות r .

r { n }

r { n ,}

r { n , m } אחד או שני מספרים בתוך הפלטה מציינים ביטוי מרווח . אם יש מספר אחד בסוגריים, הביטוי r הרגיל הקודם חוזר על עצמו n פעמים. אם יש שני מספרים המופרדים באמצעות פסיק, r חוזר על עצמו n פעמים. אם יש מספר אחד ואחריו פסיק, אז r חוזרת לפחות n פעמים.

ביטויים של מרווח זמינים רק אם - posix או - inter-interval מצוין בשורת הפקודה.

\ y

תואם את המחרוזת הריקה בהתחלה או בקצה של מילה.

\ B

תואם את המחרוזת הריקה בתוך מילה.

\ <

תואם את המחרוזת הריקה בתחילת המילה.

/>

תואם את המחרוזת הריקה בסוף מילה.

\ w

מתאים לכל תו מכונן-מילה (אות, ספרה או קו תחתון).

\ W

תואם כל תו שאינו מילה מכוננת.

\ '

תואם את המחרוזת הריקה בתחילת מאגר (מחרוזת).

'

תואם את מחרוזת ריקה בסוף חיץ.

רצפי בריחה תקפים קבועים מחרוזת (ראה להלן) תקפים גם ביטויים רגולריים.

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

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

[: alnum:]

אותיות אלפא - נומריות.

[: אלפא:]

תווים אלפביתיים.

[:רֵיק:]

תווי רווח או כרטיסייה.

[: cntrl:]

שליטה בתווים.

[:סִפְרָה:]

תווים מספריים.

[:גרָף:]

תווים שניתן להדפיסם ולגלויות. (חלל ניתן להדפסה, אך אינו גלוי, ואילו a הוא שניהם).

[:נמוך יותר:]

אותיות קטנות באותיות קטנות.

[:הדפס:]

תווים הניתנים להדפסה (תווים שאינם תווי שליטה).

[: punct:]

סימני פיסוק (תווים שאינם אות, ספרות, תווים בקרה או תווים בחלל).

[:מֶרחָב:]

תווי רווח (כגון רווח, כרטיסייה, ו formfeed, עד כמה שם).

[:עֶלִיוֹן:]

תווים אלפביתיים בעלי אותיות גדולות.

[: xdigit:]

תווים שהם ספרות הקסדצימליות.

לדוגמה, לפני תקן POSIX, כדי להתאים תווים אלפאנומריים, היית צריך לכתוב / [A-Za-z0-9] / . אם ערכת התווים שלך מכילה תווים אלפביתיים אחרים, זה לא מתאים להם, ואם ערכת התווים שלך נאספה באופן שונה מ- ASCII, ייתכן שהדבר לא יתאים אפילו לתווים האלפאנומריים של ASCII. עם מחלקות התווים POSIX, אתה יכול לכתוב / [:: alnum:]] / , וזה תואם את התווים אלפביתית ומספרי להגדיר את התווים.

שני רצפים מיוחדים נוספים יכולים להופיע ברשימות תווים. אלה חלים על ערכות תווים שאינן ASCII, אשר יכולות לכלול סמלים בודדים (הנקראים רכיבי איסוף ) המיוצגים עם יותר מתו אחד, וכן מספר תווים שהם שווים עבור איסוף או מיון. (למשל, בצרפתית, מישור `` `` `` `` `` `` `'' '' '' '' 'ו' '

איסוף סמלים

סמל קולטינג הוא מרכיב רב-תכליתי המאגד בתוכו [. ו. לדוגמה, אם ch הוא אלמנט collating , אז [[.ch.]] הוא ביטוי רגיל התואם אלמנט זה, בעוד ש- [ch] הוא ביטוי רגיל שמתאים ל- c או h .

כיתות שוויון

מחלקה שקילות היא שם ספציפי לאזור עבור רשימה של תווים שהם שווים. השם מוקף ב- [= ו- = =] . לדוגמה, השם e עשוי לשמש כדי לייצג את כל ה "e", "e", "" ו- "e`." במקרה זה, [[= e =]] הוא ביטוי רגיל מתאים לכל דואר , e , או e .

תכונות אלה הם בעלי ערך רב באזורים שאינם דוברי אנגלית. פונקציות הספרייה המשמשות עבור ביטוי ביטוי רגיל כרגע רק לזהות POSIX אופי הכיתות; הם אינם מזהים סמלי איסוף או שיעורים שקולים.

האופרטורים \ y , \ b , \ < , \> , \ w , \ W , \ ' , ו- \ \ הם ספציפיים עבור gawk ; הם תוספים המבוססים על מתקנים בספריות הביטוי הרגולרי של גנו.

אפשרויות שורת הפקודה השונות קובעות כיצד gawk מפרש תווים בביטויים רגילים.

אין אפשרויות

במקרה ברירת המחדל, gawk לספק את כל המתקנים של ביטויים קבועים POSIX והמפעילים ביטוי רגיל GGNU שתואר לעיל. עם זאת, ביטויים המרווחים אינם נתמכים.

--posix

רק ביטויים רגולריים POSIX נתמכים, אופרטורי GNU אינם מיוחדים. (לדוגמה, \ w מתאים w מילולית). ניתן להשתמש בביטויים המרווחים.

--מָסוֹרתִי

ביטויים רגולריים רגילים של Unix מותאמים. אופרטורי GNU אינם מיוחדים, ביטויים של אינטרוולים אינם זמינים, וגם לא כיתות התווים POSIX ( [: alnum:]] וכן הלאה). תווים המתוארים על ידי רצפים בריחה אוקטלית והקסדצימלית מטופלים ממש, גם אם הם מייצגים מטא-תווים של הביטוי הרגיל.

- מרווח זמן

אפשר ביטוי ביטויים בביטויים רגילים, גם אם - מסורתיים סופקו.

פעולות

הצהרות פעולה סגורות בסוגריים, { ו } . הצהרות פעולה מורכבות מההצהרות הרגילות, ההצהרות המותנות והלולאות הנמצאות ברוב השפות. המפעילים, הצהרות הבקרה והודעות הקלט / פלט זמינות בדוגמאות לאחר האותיות של C.

אופרטורים

המפעילים ב AWK, לפי סדר הפחתת עדיפות, הם

( ... )

הַקבָּצָה

$

התייחסות שדה.

++ -

הגדלה וצמצום, הן קידומת והן Postfix.

^

Expountiation ( ** ניתן להשתמש גם, ו ** = עבור מפעיל ההקצאה).

+ -!

Unary פלוס, unary מינוס, ושלילה לוגית.

* /%

כפל, חלוקה ומודולוס.

Map -

חיבור וחיסור.

מֶרחָב

שרשור מחברים.

<>

<=> =

= = = = מפעילי הקשר הרגילים.

~ ~ ~

התאמה לביטוי רגיל, התאמה שלילית. הערה: אל תשתמש בביטוי קבוע קבוע ( / foo / ) בצד שמאל של ~ ~ ~ . השתמש רק בצד ימין. ביטוי / foo / ~ exp יש את אותה משמעות כמו (($ 0 ~ / foo /) ~ exp ) . זה בדרך כלל לא מה נועד.

in

חברות במערך.

Ball

לוגי ו.

||

לוג לוגי.

?:

הביטוי C מותנה. זה יש את הטופס expr1 ? expr2 : expr3 . אם expr1 נכון, הערך של הביטוי הוא expr2 , אחרת הוא expr3 . רק אחד expr2 ו expr3 מוערכת.

= + = - =

* = = = = = = = הקצאה. שני הקצאה מוחלטת ( var = ערך ) ואת הקצאה למפעיל (צורות אחרות) נתמכים.

דוחות בקרה

דוחות הבקרה הינם כדלקמן:

אם ( מצב ) משפט [ הצהרה אחרת ] בעוד הצהרה ( מצב ) לעשות הצהרה בעוד ( תנאי ) עבור ( expr1 ; expr2 ; expr3 ) משפט עבור ( var במערך ) הפסקה הצהרה להמשיך למחוק מערך [ index ] למחוק מערך יציאה [ ביטוי ] { HE

I / O דוחות

דוחות הקלט / פלט הם כדלקמן:

סגור ( קובץ [ , איך ] )

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

getline

הגדר $ 0 מרשומת הקלט הבאה; בחר NF , NR , FNR .

getine < file

הגדר $ 0 מהרשומה הבאה של הקובץ ; בחר NF .

TRAN

הגדר var מתוך רשומת הקלט הבאה; להגדיר NR , FNR .

getine var < file

הגדר var מהרשומה הבאה של הקובץ .

הפקודה getline [var]

הפעל הפקודה צנרת הפלט או לתוך $ 0 או var , כנ"ל.

הפקודה & getline [ var ]

הפעל את הפקודה בתור תהליך שיתוף צנרת פלט או לתוך $ 0 או var , כאמור. שיתוף תהליכים הם הרחבה gawk .

הַבָּא

הפסק לעבד את רשומת הקלט הנוכחית. רשומת הקלט הבאה נקראת ועיבוד מתחיל עם הדפוס הראשון בתוכנית AWK. אם סוף הנתונים קלט הוא הגיע, את הבלוק (ים) end (s), אם בכלל, מבוצעות.

הבא

הפסק את עיבוד קובץ הקלט הנוכחי. רשומת הקלט הבאה נקראת מתוך קובץ הקלט הבא. FILENAME ו- ARGIND מעודכנים, FNR מתאפס ל -1, והעיבוד מתחיל עם הדפוס הראשון בתוכנית AWK. אם סוף הנתונים קלט הוא הגיע, את הבלוק (ים) end (s), אם בכלל, מבוצעות.

הדפס

מדפיס את הרשומה הנוכחית. רשומת הפלט מסתיימת עם הערך של משתנה ה - ORS .

הדפס רשימת תפוצה

מדפיס ביטויים. כל ביטוי מופרד על ידי הערך של משתנה OFS . רשומת הפלט מסתיימת עם הערך של משתנה ה - ORS .

קובץ expr-list > קובץ

מדפיס ביטויים בקובץ . כל ביטוי מופרד על ידי הערך של משתנה OFS . רשומת הפלט מסתיימת עם הערך של משתנה ה - ORS .

printf fmt, expr-list

פורמט והדפס.

printf fmt, expr-list > קובץ

פורמט והדפס על הקובץ .

מערכת ( cmd-line )

בצע את הפקודה cmd-line , והחזר את מצב היציאה. (ייתכן שהדבר אינו זמין במערכות שאינן POSIX).

fflush ( [ file ] )

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

ניתוב מחדש של הפלט מותר עבור print ו- printf .

הדפס ... >> קובץ

מוסיף פלט לקובץ .

הדפס ... | פקודה

כותב על צינור.

הדפס ... | & הפקודה

שולח נתונים לתהליך משותף.

הפקודה getline מחזירה 0 בסוף הקובץ ו- -1 על שגיאה. עם שגיאה, ERRNO מכיל מחרוזת המתארת ​​את הבעיה.

הערה: אם אתה משתמש בצינור או בתהליך משותף כדי לקבל קו , או מתוך print או printf בתוך לולאה, עליך להשתמש קרוב () כדי ליצור מופעים חדשים של הפקודה. AWK אינו סוגר אוטומטית צינורות או משתף פעולה כאשר הם מחזירים את EOF.

הצהרת ה - printf

גירסאות AWK של הצהרת printf ו- sprintf () (ראה להלן) מקבלות את הפורטים הבאים של מפרט המרה:

% c

תו ASCII. אם הארגומנט ששימש עבור % c הוא מספרי, הוא מטופל כדמות ומוודפס. אחרת, הטענה מניחה שהיא מחרוזת, והדפוס הראשון היחיד של מחרוזת זו מודפס.

% d , % i

מספר עשרוני (החלק השלם).

% e,% E

מספר נקודה צפה של הטופס [-] d.dddddde [+ -] dd . פורמט % E משתמש ב- E במקום e .

% f

מספר נקודה צפה של הטופס [-] ddd.dddddd .

% g,% G

השתמש בהמרה % e או % f , המוקדם מביניהם, עם אפסים לא משמעותיים מודחקים. פורמט % G משתמש ב- % E במקום ב- % e .

% o

מספר אוקטלי לא חתום (גם מספר שלם).

% u מספר עשרוני לא חתום (שוב, מספר שלם).

% s

מחרוזת תווים.

% x,% X

מספר הקסדצימלי לא חתום (מספר שלם). הפורמט % X משתמש ב- ABCDEF במקום abcdef .

קה

תו בודד אחד; לא מתווכחים שום ארגומנטים.

פרמטרים נוספים אופציונליים עשויים להימצא בין % לבין אות הבקרה:

לספור $

השתמש בארגומנט ' count ' בשלב זה בתבנית. זה נקרא מציין מיקומי והוא מיועד בעיקר לשימוש בגירסאות מתורגמות של מחרוזות פורמט, לא בטקסט המקורי של תוכנית AWK. זה הארכה gawk .

-

הביטוי צריך להיות מוצדק בתחומו.

מֶרחָב

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

+

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

#

השתמש בטופס "חלופי" עבור אותיות בקרה מסוימות. עבור % o , לספק אפס מוביל. עבור % x ו- % X , ספק 0x או 0x מובילים לתוצאה nonzero. עבור % e , % E ו- % f , התוצאה תמיד מכילה נקודה עשרונית. עבור % g ו- % G , אפסים עוקבים לא יוסרו מהתוצאה.

0

מוביל 0 (אפס) מעשים כמו דגל, המציין פלט צריך להיות מרופד עם אפסים במקום רווחים. זה חל גם על פורמטים פלט לא מספריים. לדגל זה יש רק השפעה כאשר רוחב השדה רחב יותר מהערך שיודפס.

רוֹחַב

השדה צריך להיות מרופד לרוחב זה. השדה הוא מרופד בדרך כלל עם רווחים. אם הדגל 0 נעשה שימוש, הוא מרופד עם אפסים.

. prec

מספר המציין את הדיוק לשימוש בעת הדפסה. עבור % e , % E , ו % f פורמטים, זה מציין את מספר הספרות שברצונך להדפיס בצד ימין של הנקודה העשרונית. עבור % g , ו- % G פורמטים, הוא מציין את המספר המרבי של ספרות משמעותיות. עבור הפורמטים % d , % o , % i , % u , % x ו- % X , הוא מציין את המספר המינימלי של ספרות להדפסה. עבור % s , הוא מציין את המספר המרבי של תווים מהמחרוזת שיש להדפיסה.

רוחב הדינאמי והיכולות המוקדמות של השגרה ANSI C printf () נתמכות. A * במקום של הרוחב או מפרטים מוקדמים גורם לערכים שלהם להילקח מתוך הרשימה ארגומנט כדי printf או sprintf () . כדי להשתמש במפרט positional עם רוחב דינמי או דיוק, לספק את הספירה $ אחרי * במחרוזת הפורמט. לדוגמה, "% 3 $ * 2 $. * 1 $ s" .

שמות קבצים מיוחדים

כאשר אני עושה הפניה I / O מ print או printf לקובץ, או דרך getline מקובץ, gawk מזהה שמות קבצים מסוימים פנימי. שמות קבצים אלה מאפשרים גישה לתיאורי קבצים פתוחים בירושה מתהליך ההורה של gawk (בדרך כלל את הקליפה). שמות קבצים אלה עשויים לשמש גם בשורת הפקודה כדי שם קבצי נתונים. שמות הקבצים הם:

/ dev / stdin

הקלט הסטנדרטי.

/ dev / stdout

הפלט הסטנדרטי.

/ dev / stderr

פלט השגיאה הסטנדרטי.

/ dev / fd / n

הקובץ המשויך לתיאור הקובץ הפתוח n .

אלה שימושיים במיוחד עבור הודעות שגיאה. לדוגמה:

- "פוצצת אותו!" > "/ dev / stderr"

ואילו אחרת היית צריך להשתמש

- "פוצצת אותו!" | "cat 1> & 2"

ניתן להשתמש בשמות הקבצים המיוחדים הבאים עם המפעיל & | co-process ליצירת חיבורי רשת TCP / IP.

/ inet / tcp / lport / rhost / rport

קובץ עבור חיבור TCP / IP בנמל היציאה המקומית מרחוק מארח מרחוק על יציאות מרחוק. השתמש ביציאה של 0 כדי שהמערכת תבחר יציאה.

/ inet / udp / lport / rhost / rport

דומה, אך משתמשים ב- UDP / IP במקום ב- TCP / IP.

/ inet / raw / lport / rhost / rport

שמור לשימוש עתידי.

שמות קבצים מיוחדים אחרים מספקים גישה למידע אודות תהליך הגלישה . שמות קבצים אלה מיושנים כעת. השתמש במערך PROCINFO כדי לקבל את המידע שהם מספקים. שמות הקבצים הם:

/ dev / pid

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

/ dev / ppid

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

/ dev / pgrpid

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

/ dev / משתמש

קריאת קובץ זה מחזירה רשומה אחת שהסתיימה עם קו חדש. השדות מופרדים עם רווחים. $ 1 הוא הערך של שיחת המערכת getuid (2), 2 $ הוא הערך של calleuid (2) מערכת השיחה, $ 3 הוא הערך של getgid (2) להתקשר המערכת, ו $ 4 הוא הערך של getegid (2) שיחת מערכת. אם ישנם שדות נוספים, הם מזהים את הקבוצה על ידי קבוצות (2). ייתכן שקבוצות מרובות אינן נתמכות בכל המערכות.

פונקציות מספריות

AWK כולל את פונקציות אריתמטיות מובנות הבאות:

atan2 ( y , x )

מחזירה את arctangent של y / x ברדיאנים.

cos ( expr )

מחזירה את הקוסינוס של expr , שנמצא ברדיאנים.

exp ( expr )

פונקציה מעריכית.

int ( expr )

מקצץ למספר שלם.

יומן ( expr )

הפונקציה הלוגריתמית הטבעית.

rand ()

מחזירה מספר אקראי בין 0 ל -1.

חטא ( expr )

מחזירה את הסינוס של expr , שנמצא ברדיאנים.

sqrt ( expr )

הפונקציה שורש ריבועי.

srand ( [ expr ] )

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

פונקציות מחרוזת

ל- Gawk יש את פונקציות המחרוזת המובנות הבאות:

asort [ s , d ] )

מחזירה את מספר האלמנטים במערך המקור s . התוכן של s ממוינות לפי הכללים הרגילים של gawk להשוואה בין ערכים, והמדדים של הערכים הממוינים של s מוחלפים במספרים שלמים עוקבים המתחילים ב -1. אם מוגדר מערך היעד האופציונלי d , אז s משוכפל לראשונה לתוך d , ולאחר מכן d מסודר, משאיר את האינדקסים של מערך המקור ללא שינוי.

gensub ( r , s , h [ , t ] )

חפש את מחרוזת היעד t עבור התאמות של הביטוי הרגיל r . אם h הוא מחרוזת המתחילה ב- g או G , ולאחר מכן להחליף את כל ההתאמות של r עם s . אחרת, h הוא מספר המציין איזה התאמה של r להחליף. אם t לא מסופק, $ 0 משמש במקום. בתוך הטקסט החלופי, רצף \ n , שבו n הוא ספרה בין 1 ל -9, ניתן להשתמש בו כדי לציין רק את הטקסט התואם את תת-הקטגוריה של הסוגריים הממוזגים. רצף \ 0 מייצג את כל הטקסט התואם, וכך גם התו & . שלא כמו תת () ו gsub () , מחרוזת שונה מוחזר כתוצאה של הפונקציה, מחרוזת היעד המקורי לא השתנה.

gsub ( r , s [ , t ] )

עבור כל מחרוזת התואמת את הביטוי הרגיל r במחרוזת t , תחליף את מחרוזת s , ולהחזיר את מספר החלפות. אם t לא מסופק, השתמש $ 0 . טקסט & במקטע החלופי מוחלף בטקסט שתואם בפועל. השתמש \ & כדי לקבל מילולי & . (זה חייב להיות מודפס כמו "\\ &" , ראה GAWK: תכנות אפקטיבי AWK לדיון מלא יותר של הכללים של & ו backslashes בטקסט החלופי של תת () , (gsub) , ו - gensub () .)

אינדקס ( s , t )

מחזירה את האינדקס של מחרוזת t במחרוזת s , או 0 אם t לא קיים. (משמעות הדבר היא כי מדדי אופי להתחיל באחת.)

אורך ( ים )

מחזירה את אורך המחרוזת , או את האורך של $ 0 אם s אינו מסופק.

התאמה ( s , r [ , a ]]

מחזירה את המיקום במקום שבו מתרחשת הביטוי R הרגיל, או 0 אם r אינו נוכח, וקובע את הערכים של RSTART ו- RLENGTH . שים לב כי סדר הארגומנט זהה לזה של האופרטור ~ str ~ re . אם מערך a מסופק, א ינקה ולאחר מכן אלמנטים 1 עד n מלאים חלקים של S התואמות את subcarion בסוגריים המקביל ב r . האלמנט 0 'של מכיל את החלק של s תואמים את הביטוי הרגיל כולו r .

פיצול ( s , [ , r ] )

מחלק את מחרוזת s לתוך מערך a על הביטוי הרגיל r , ומחזירה את מספר השדות. אם r מושמט, FS משמש במקום. המערך a מסולק תחילה. פיצול מתנהג זהה לפיצול השדה, שתואר לעיל.

sprintf ( fmt , expr-list )

מדפיס רשימת תפריטים לפי fmt , ומחזיר את המחרוזת המתקבלת.

strtonum ( str )

בוחן את str , ומחזיר את הערך המספרי שלו. אם str מתחיל עם 0 מוביל, strtonum () מניח כי str הוא מספר אוקטלי. אם str מתחיל עם 0x 0x או 0x , strtonum () מניח כי str הוא מספר הקסדצימלי.

תת ( r , s [ , t ] )

בדיוק כמו gsub () , אבל רק מחרוזת ההתאמה הראשונה מוחלפת.

substr ( s , i [ , n ] )

מחזירה את מחרוזת n -character לכל היותר ב- s . אם n מושמט, שאר s משמש.

tolower ( str )

מחזירה עותק של מחרוזת המחרוזת, כאשר כל התווים של האותיות העליונות מתורגמים למקבילים המתאימים למקרה הנמוך. תווים לא-אלפביתיים נותרים ללא שינוי.

toupper ( str )

מחזירה עותק של מחרוזת המחרוזת, כאשר כל אותיות האותיות התחתונות מתורגמות למקבילות המקבילות המקבילות. תווים לא-אלפביתיים נותרים ללא שינוי.

פונקציות זמן

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

mktime ( datepec )

Rurns datespec לתוך חותמת זמן של אותו טופס כפי שהוחזר על ידי systime () . התאריכיםpec הוא מחרוזת של טופס YYYY MM DD HH MM SS [DST] . תוכן המחרוזת הוא שישה או שבעה מספרים המייצגים בהתאמה את השנה כולה, כולל חודש, חודש מ 1 עד 12, יום החודש מ 1 עד 31, השעה של היום מ 0 עד 23, דקה מ 0 ל 59, והשני מ 0 עד 60, וכן דגל שמירת יום אופציונלי. הערכים של מספרים אלה לא צריכים להיות בטווחים שצוינו; לדוגמה, שעה של -1 פירושה שעה אחת לפני חצות. לוח השנה הגרגוריאני אפס מקורו, עם שנה 0 שנה קודמת 1 ו -1 שנה הקודמת שנה 0. הזמן הוא להניח להיות באזור המקומי. אם דגל שמירת היום הוא חיובי, הזמן הוא הזמן להיות שעון קיץ; אם אפס, הזמן הוא הזמן להיות רגיל; ואם שלילית (ברירת המחדל), mktime () מנסה לקבוע אם שעון קיץ הוא למעשה למשך הזמן שצוין. אם datepec אינו מכיל מספיק אלמנטים או אם הזמן המתקבל הוא מחוץ לטווח, mktime () מחזירה -1.

strftime ( [ תבנית [ , חותמת זמן ]] )

חותמת פורמטים לפי המפרט בפורמט. חותמת הזמן צריכה להיות מאותה צורה כפי שהוחזרה על ידי systime () . אם חותמת הזמן חסרה, השעה הנוכחית של היום משמשת. אם הפורמט חסר, נעשה שימוש בתבנית ברירת מחדל השווה לפלט של תאריך (1). ראה את המפרט עבור הפונקציה strftime () ב ANSI C עבור המרות בפורמט מובטח להיות זמין. גרסה של דומיין ציבורי של strftime (3) ואת דף גבר עבור אותו לבוא עם gawk ; אם גרסה זו שימשה לבניית gawk , כל ההמרות המתוארות בדף האיש הזה זמינות להצגה .

systime ()

מחזירה את השעה הנוכחית של היום כמספר השניות מאז המערכות של Epoch (1970-01-01 00:00:00 UTC במערכות POSIX).

ביט מניפולציות פונקציות

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

ו ( v1 , v2 )

החזר את ה- bitwise ואת הערכים שסופקו על ידי v1 ו- v2 .

Compl (Val)

החזר את המשלים של bit.

lshift ( val , count )

החזר את הערך של val , שהוסב על ידי סיביות ספירה .

או ( v1 , v2 )

החזר את הערך OR של הערכים שסופקו על ידי v1 ו- v2 .

rshift ( val , count )

החזר את הערך של VAL , זז ימינה על ידי ספירת סיביות.

xor ( v1 , v2 )

החזר את ה- XOR של ה- bit של הערכים שסופקו על ידי v1 ו- v2 .

פונקציות בינאום

החל מגרסה 3.1 של gawk , ניתן להשתמש בפונקציות הבאות מתוך תוכנית AWK לתרגום מחרוזות בזמן ריצה. לקבלת פרטים מלאים, ראה GAWK: תכנות AWK אפקטיבי .

bindtextdomain ( directory [ , domain ] )

מציין את הספריה שבה נראה gawk עבור קובצי .mo , למקרה שלא ניתן יהיה להציב אותם במקומות "סטנדרטיים" (לדוגמה, במהלך בדיקה). היא מחזירה את הספריה שבה התחום "מחויב".

דומיין ברירת המחדל הוא הערך של TEXTDOMAIN . אם הספרייה היא מחרוזת null ( "" ), bindtextdomain () מחזירה את הכריכה הנוכחית עבור התחום הנתון.

dcgettext ( string [ , domain [ , category ]] )

מחזירה את התרגום של מחרוזת בתחום דומיין טקסט עבור הקטגוריה של הקטגוריה המקומית. ערך ברירת המחדל עבור התחום הוא הערך הנוכחי של TEXTDOMAIN . ערך ברירת המחדל עבור הקטגוריה הוא "LC_MESSAGES" .

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

dcngettext ( string1 , string2 , number [ , domain [ , category ]] )

מחזירה את צורת רבים המשמש מספר התרגום של string1 ו string2 בתחום תחום טקסט עבור הקטגוריה קטגוריה מקומית . ערך ברירת המחדל עבור התחום הוא הערך הנוכחי של TEXTDOMAIN . ערך ברירת המחדל עבור הקטגוריה הוא "LC_MESSAGES" .

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

פונקציות מוגדרות על ידי המשתמש

הפונקציות ב- AWK מוגדרות באופן הבא:

שם פונקציה ( רשימת פרמטרים ) { הצהרות }

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

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

(p, q, a, b) # a ו- b הם מקומיים {...} / abc / {...; f (1, 2); ...

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

הפונקציות יכולות להתקשר זו לזו ועשויות להיות רקורסיביות. פרמטרים פונקציה המשמשים משתנים מקומיים הם מאותחל את מחרוזת null ואת מספר אפס על הפניה פונקציה.

השתמש ב- expr return כדי להחזיר ערך מפונקציה. ערך ההחזרה אינו מוגדר אם לא סופק ערך, או אם הפונקציה חוזרת על ידי "נפילה" מהקצה.

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

המילה func עשוי לשמש במקום לתפקד .

העלאה דינמית של פונקציות חדשות

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

הרחבה ( אובייקט , פונקציה )

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

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

סיגנלים

pagawk מקבל שני אותות. SIGUSR1 גורם לה להשליך פרופיל ומערכת שיחה של פונקציה לקובץ הפרופיל, שהוא גם awkprof.out , או כל קובץ אחר בשם עם אפשרות --profile . לאחר מכן הוא ממשיך לרוץ. SIGHUP גורם לה להשליך את הפרופיל ואת ערימת השיחה לתפקד ולאחר מכן לצאת.

דוגמאות

הדפס ומיין את שמות ההתחברות של כל המשתמשים: BEGIN {FS = ":}} הדפס $ 1 | "sort"} ספירת שורות בקובץ: {nlines ++} END {print nlines} הקדם כל שורה לפי מספר הקובץ בקובץ: {print FNR, $ 0} קונקאט ומספר שורה (וריאציה על נושא): {print NR, $ 0}

הַפנָמָה

מחרוזות מחרוזת הן רצפים של תווים המוכלים במרכאות כפולות. בסביבות שאינן דוברות אנגלית, ניתן לסמן מחרוזות בתוכנית AWK כנדרש תרגום לשפה הטבעית. מחרוזות כאלה מסומנות בתכנית AWK עם קו תחתון מוביל ("_" "). לדוגמה,

gawk 'BEGIN {print "hello, world"}'

תמיד מדפיסה שלום, עולם . אבל,

gawk 'BEGIN {print _ "hello, world"}'

אולי להדפיס בונור, מונד בצרפת.

ישנם מספר שלבים המעורבים בהפקת והפעלת תוכנית AWK להתאמה.

1.

הוסף פעולת BEGIN כדי להקצות ערך למשתנה TEXTDOMAIN כדי להגדיר את תחום הטקסט לשם המשויך לתוכנית שלך.


BEGIN {TEXTDOMAIN = "myprog"}

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

2.

סמן את כל המיתרים שיש לתרגם בקווים תחתונים מובילים.

3.

במידת הצורך, השתמש בפונקציות dcgettext () ו / או bindtextdomain () בתוכנית שלך, לפי הצורך.

4.

הפעל gawk - gen-po-myprog.awk> myprog.po כדי ליצור קובץ .po עבור התוכנית שלך.

5.

לספק תרגומים מתאימים, לבנות ולהתקין קובץ .mo המתאים.

תכונות הבינאום מתוארות בפירוט מלא ב- GAWK: תכנות AWK אפקטיבי .

תאימות Posix

המטרה העיקרית עבור gawk היא תאימות עם תקן POSIX, כמו גם עם הגרסה האחרונה של UNIX awk . לשם כך, gawk משלבת את התכונות הבאות למשתמש גלוי אשר אינם מתוארים בספר AWK, אבל הם חלק המעבדה Bell גרסה של awk , והם בסטנדרט POSIX.

הספר מציין כי הקצאת משתנה שורת הפקודה מתרחשת כאשר אווק היה פותח את הארגומנט כקובץ, שאחרי ביצוע הבלוק BEGIN . עם זאת, ביישומים קודמים, כאשר משימה זו הופיעה לפני שמות קבצים כלשהם, המשימה תתרחש לפני הפעלת הבלוק BEGIN . היישומים התבססו על התכונה '``.' '' כאשר אופק השתנה כך שיתאים לתיעוד שלו, נוספה האפשרות -v להקצאת משתנים לפני ביצוע התוכנית כדי להתאים ליישומים התלויים בהתנהגות הישנה. (תכונה זו הוסכם על ידי מעבדות בל ומפתחי גנו.)

האפשרות -W עבור תכונות ספציפיות ליישום היא מהתקן POSIX.

בעת עיבוד טיעונים, gawk משתמש באפשרות המיוחדת `` - '' כדי לסמן את סוף הטיעונים. במצב תאימות, הוא מזהיר על אבל מתעלם מאפשרויות אחרות שלא הוגדרו. בפעולה רגילה, ארגומנטים כאלה מועברים לתוכנית AWK כדי שהיא תעבוד.

ספר AWK אינו מגדיר את ערך ההחזרה של srand () . תקן POSIX יש לה להחזיר את הזרע זה היה באמצעות, כדי לאפשר מעקב אחר רצפי מספרים אקראיים. לכן srand () ב gawk גם מחזירה הזרע הנוכחי שלה.

תכונות חדשות נוספות הן: השימוש במספר אפשרויות -F (מתוך MKS awk ); מערך ENVIRON ; את \ a , ו \ v להימלט sequences (נעשה במקור ב gawk ו מוזן בחזרה לתוך המעבדה Bell גירסה); the tolower () ו toupper () מובנית פונקציות (מן המעבדה Bell גירסה); ואת ANSI C מפרט המרה ב printf (נעשה הראשון במעבדה Bell גרסה).

תכונות היסטוריות

ישנן שתי תכונות של יישומים היסטוריים AWK כי gawk תומך. ראשית, ניתן לקרוא את אורך () מובנה פונקציה לא רק עם שום ויכוח, אבל גם ללא סוגריים! כָּך,

אורך # # אלגול הקדוש 60, באטמן!

הוא זהה לאחד משני

אורך = ()
אורך = ($ 0)

תכונה זו מסומנת כ- `'הוצא משימוש' 'בתקן POSIX, ומזהירה התראה על השימוש בו אם - lint מצוין בשורת הפקודה.

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

הרחבות גנו

Gawk יש מספר הרחבות POSIX awk . הם מתוארים בסעיף זה. כל ההרחבות המתוארות כאן יכולות להיות מושבתות על ידי הפניית גאווק עם האפשרות המסורתית .

התכונות הבאות של gawk אינן זמינות ב POSIX awk .

*

לא מתבצעת חיפוש נתיב עבור קבצים בשם באמצעות אפשרות -f . לכן משתנה הסביבה AWKPATH אינו מיוחד.

*

רצף הבריחה. (מושבת עם --posix ).

*

הפונקציה fflush () . (מושבת עם --posix ).

*

היכולת להמשיך קווים לאחר ? ו. (מושבת עם --posix ).

*

אוקטלים והקסדצימליים בתכניות AWK.

*

ARGIND , BINMODE , ERRNO , LINT , RT ו TEXTDOMAIN משתנים אינם מיוחדים.

*

משתנה IGNORECASE ותופעות הלוואי שלו אינן זמינות.

*

המשתנה FIELDWIDTHS ופיצול שדה רוחב קבוע.

*

מערך PROCINFO אינו זמין.

*

השימוש ב- RS כהבעה רגילה.

*

שמות הקבצים המיוחדים הזמינים עבור ניתוב מחדש של קלט / פלט אינם מזוהים.

*

המפעיל & עבור יצירת שיתוף תהליכים.

*

היכולת לפצל תווים בודדים באמצעות מחרוזת null כמו הערך של FS , וכמו הארגומנט השלישי לפצל () .

*

הארגומנט השני האופציונלי לפונקציה Close () .

*

הארגומנט השלישי האופציונלי לפונקציה () .

*

היכולת להשתמש specifiers positional עם printf ו sprintf () .

*

השימוש במערך מחיקה למחיקת כל התוכן של מערך.

*

השימוש nextfile לנטוש עיבוד של קובץ קלט הנוכחי.

*

ו - () , () , () , () , () , () , () , () , () ו xor () פונקציות.

*

מחרוזות הניתנות להתאמה.

*

הוספת פונקציות מובנות חדשות באופן דינמי עם הפונקציה הרחבה () .

ספר AWK אינו מגדיר את ערך ההחזרה של הפונקציה Close () . הסגירה של Gawk () מחזירה את הערך מ- fclose (3) או pclose (3), בעת סגירת קובץ פלט או צינור, בהתאמה. הוא מחזיר את מצב היציאה של התהליך בעת סגירת צינור קלט. ערך ההחזרה הוא -1 אם הקובץ, הצינור או התהליך המשותף לא נפתחו עם ניתוב מחדש.

כאשר gawk מופעלת עם אפשרות - traditional , אם הארגומנט FS לאפשרות -F הוא ` t` ', FS מוגדר לתו הכרטיסייה. שים לב שהקלדת gawk-F \ t ... פשוט גורמת לקליפה לצטט את 't', '' ולא מעבירה את האפשרות '' ל ''. מאז זה מקרה מיוחד למדי מכוער, זה לא התנהגות ברירת המחדל. התנהגות זו גם אינה מתרחשת אם - posix צוין. כדי באמת לקבל אופי הכרטיסייה כמו מפריד השדה, עדיף להשתמש ציטוטים בודדים: gawk-F '\' t .

ראה פקודות אחרות : לחכות , lp , להשלים , execv , getfacl , ioctl , Uniq , rmmod , pvcreate , rsh , unix2dos , cal , fs , cd , iwpriv , swapon , autofs , לדבר , motd , חינם , lpr , execl , fdisk , ב , מי , iwconfig , ifconfig , vgdisplay , פתוח , lsmod , ntohs , mailq , להרוג , wtmp