זהו הפקודה gawk שניתן להפעיל בספק האירוח החינמי של OnWorks באמצעות אחת מתחנות העבודה המקוונות המרובות שלנו, כגון Ubuntu Online, Fedora Online, אמולטור מקוון של Windows או אמולטור מקוון של MAC OS
תָכְנִית:
שֵׁם
gawk - שפת סריקת ועיבוד דפוסים
תַקצִיר
צוחק [אפשרויות בסגנון POSIX או GNU] -f מסמך תוכנית [ -- ] קובץ...
צוחק [ אפשרויות בסגנון POSIX או GNU ] [ -- ] טקסט תוכנית קובץ ...
תיאור
Gawk הוא היישום של פרויקט GNU של שפת התכנות AWK. זה מתאים ל
הגדרת השפה בתקן POSIX 1003.1. גרסה זו בתורה היא
מבוסס על התיאור ב השמיים AWK תכנות שפה, מאת Aho, Kernighan, ו
וינברגר. Gawk מספק את התכונות הנוספות שנמצאות בגרסה הנוכחית של בריאן
של קרניגאן awk ומספר הרחבות ספציפיות ל-GNU.
שורת הפקודה מורכבת מאפשרויות ל צוחק עצמו, טקסט תוכנית AWK (אם לא מסופק
באמצעות -f or --קוֹבֶץ אפשרויות), וערכים שיהיו זמינים ב- ARGC ו ARGV מראש
משתני AWK מוגדרים.
מתי צוחק הוא מופעל עם --פּרוֹפִיל אפשרות, זה מתחיל לאסוף סטטיסטיקות פרופיל
מביצוע התוכנית. Gawk פועל לאט יותר במצב זה, ובאופן אוטומטי
מייצר פרופיל ביצוע בקובץ awkprof.out כשנגמר. ראה את --פּרוֹפִיל
אפשרות, למטה.
Gawk יש גם באגים משולב. ניתן להתחיל סשן איתור באגים אינטראקטיבי על ידי
לספק את --לנפות אפשרות לשורת הפקודה. במצב ביצוע זה, צוחק המון
קוד המקור AWK ולאחר מכן מבקש פקודות ניפוי באגים. Gawk יכול רק לנפות באגים ב-AWK
מקור התוכנית המסופק עם -f אוֹפְּצִיָה. ניפוי הבאגים מתועד ב לִבהוֹת: אפקטיבי
AWK תכנות.
אוֹפְּצִיָה פורמט
Gawk האפשרויות עשויות להיות אופציות מסורתיות בסגנון POSIX של אות אחת, או ארוכות בסגנון GNU
אפשרויות. אפשרויות POSIX מתחילות ב-"-" בודד, בעוד שאפשרויות ארוכות מתחילות ב---. ארוך
אפשרויות מסופקות הן עבור תכונות ספציפיות ל-GNU והן עבור תכונות המחייבות POSIX.
Gawkאופציות ספציפיות משמשות בדרך כלל בצורת אופציה ארוכה. ויכוחים לאפשרויות ארוכות
מצטרפים לאפשרות על ידי an = סימן, ללא רווחים מתערבים, או שהם עשויים להיות
מסופק בארגומנט שורת הפקודה הבא. אפשרויות ארוכות עשויות להיות מקוצרות, כל עוד
הקיצור נשאר ייחודי.
בנוסף, לכל אופציה ארוכה יש אופציה קצרה מתאימה, כך שהאופציה היא
ניתן להשתמש בפונקציונליות מבפנים #! סקריפטים הניתנים להפעלה.
אפשרויות
Gawk מקבל את האפשרויות הבאות. האפשרויות הסטנדרטיות מופיעות תחילה, ואחריהן
אפשרויות עבור צוחק הרחבות, הרשומות בסדר אלפביתי לפי אפשרות קצרה.
-f מסמך תוכנית
--קוֹבֶץ מסמך תוכנית
קרא את מקור תוכנית AWK מהקובץ מסמך תוכנית, במקום מהראשון
ארגומנט שורת הפקודה. מרובות -f (אוֹ --קוֹבֶץ) ניתן להשתמש באפשרויות.
-F fs
--מפריד שדות fs
השתמש fs עבור מפריד שדות הקלט (הערך של ה- FS משתנה מוגדר מראש).
-v היה=val
--לְהַקְצוֹת היה=val
הקצה את הערך val למשתנה היה, לפני תחילת ביצוע התוכנית.
ערכי משתנים כאלה זמינים ל- התחל כלל של תוכנית AWK.
-b
--characters-as-bytes
התייחס לכל נתוני הקלט כתווים של בייט בודד. במילים אחרות, אל תשלם
תשומת לב למידע המקומי בעת ניסיון לעבד מחרוזות כרב-בתים
דמויות. ה --posix האפשרות עוקפת את האפשרות הזו.
-c
--מָסוֹרתִי
לְהַרִיץ תאימות מצב. במצב תאימות, צוחק מתנהג באופן זהה ל
של בריאן קרניגאן awk; אף אחת מההרחבות הספציפיות ל-GNU אינה מזוהה. לִרְאוֹת גנה
הרחבות, להלן, למידע נוסף.
-C
--זכויות יוצרים
הדפס את הגרסה הקצרה של הודעת מידע על זכויות היוצרים של GNU על התקן
פלט ויציאה בהצלחה.
-d[פילה]
--משתני-dump[=פילה]
הדפס רשימה ממוינת של משתנים גלובליים, סוגיהם והערכים הסופיים שלהם פילה. אם
לא פילה מסופק, צוחק משתמש בקובץ בשם awkvars.out בספרייה הנוכחית.
רשימה של כל המשתנים הגלובליים היא דרך טובה לחפש טיפוגרפי
שגיאות בתוכניות שלך. אתה גם תשתמש באפשרות זו אם יש לך גדול
תוכנית עם הרבה פונקציות, ואתה רוצה להיות בטוח שהפונקציות שלך לא
השתמש בטעות במשתנים גלובליים שהתכוונת להיות מקומיים. (זה
טעות קלה במיוחד לעשות עם שמות משתנים פשוטים כמו i, j, וכן הלאה.)
-D[פילה]
--לנפות[=פילה]
אפשר איתור באגים של תוכניות AWK. כברירת מחדל, מאתר הבאגים קורא פקודות
באופן אינטראקטיבי מהמקלדת (קלט סטנדרטי). האופציונלי פילה טענה
מציין קובץ עם רשימה של פקודות עבור מאתר הבאגים לביצוע ללא
באופן אינטראקטיבי.
-e טקסט תוכנית
--מָקוֹר טקסט תוכנית
השתמש טקסט תוכנית כקוד המקור של תוכנית AWK. אפשרות זו מאפשרת את הקל
ערבוב של פונקציות ספרייה (בשימוש באמצעות ה -f ו --קוֹבֶץ אפשרויות) עם מקור
הקוד שהוזן בשורת הפקודה. הוא מיועד בעיקר ל-AWK בינוני עד גדול
תוכניות המשמשות בסקריפטים של מעטפת.
-E פילה
--exec פילה
דומה -fעם זאת, אפשרות זו היא האחרונה שעובדה. זה צריך להיות
משמש עם #! סקריפטים, במיוחד עבור יישומי CGI, כדי למנוע מעבר פנימה
אפשרויות או קוד מקור (!) בשורת הפקודה מכתובת אתר. אפשרות זו מבטלת
הקצאות משתנים בשורת הפקודה.
-g
--gen-סיר
סרוק ונתח את תוכנית AWK, וצור GNU .סיר (תבנית אובייקט נייד)
פורמט קובץ בפלט סטנדרטי עם ערכים עבור כל המחרוזות הניתנות לוקליזציה ב-
תכנית. התוכנית עצמה לא מופעלת. ראה את ה-GNU gettext הפצה עבור
מידע נוסף על .סיר קבצים.
-h
- עזרה הדפס סיכום קצר יחסית של האפשרויות הזמינות על הפלט הסטנדרטי.
(לפי ה גנה סִמוּל תקנים, אפשרויות אלה גורמות ליציאה מיידית ומוצלחת.)
-i כולל-קובץ
--לִכלוֹל כולל-קובץ
טען ספריית מקור awk. זה מחפש את הספרייה באמצעות ה AWKPATH
משתנה הסביבה. אם החיפוש הראשוני נכשל, ייעשה ניסיון נוסף
לאחר צירוף ה .אוק סִיוֹמֶת. הקובץ ייטען פעם אחת בלבד (כלומר,
כפילויות נמחקות), והקוד אינו מהווה את התוכנית הראשית
מָקוֹר.
-l lib
--לִטעוֹן lib
טען ספרייה משותפת lib. זה מחפש את הספרייה באמצעות ה AWKLIBPATH
משתנה הסביבה. אם החיפוש הראשוני נכשל, ייעשה ניסיון נוסף
לאחר הוספת סיומת ברירת המחדל של הספרייה המשותפת עבור הפלטפורמה. הספרייה
שגרת האתחול צפויה לקבל שם dl_load().
-L [ערך]
--מוֹך[=ערך]
ספק אזהרות לגבי מבנים מפוקפקים או שאינם ניידים ל-AWK אחרים
יישומים. עם טיעון אופציונלי של קטלני, אזהרות מוך הופכות לקטלניות
שגיאות. זה אולי דרסטי, אבל השימוש בו בהחלט יעודד את הפיתוח
של תוכניות AWK נקיות יותר. עם טיעון אופציונלי של חוקי, רק אזהרות לגבי
מוציאים דברים שהם למעשה לא חוקיים. (זה עדיין לא מיושם במלואו.)
-M
--ביגנום
לכפות אריתמטיקה דיוק שרירותי על מספרים. לאפשרות זו אין השפעה אם צוחק
אינו מורכב לשימוש בספריות GNU MPFR ו-MP.
-n
--לא-עשרוני-נתונים
זיהוי ערכים אוקטליים והקסדצימליים בנתוני קלט. השתמש זֶה אוֹפְּצִיָה עם גדול
זְהִירוּת!
-N
--use-lc-numeric
זה כוחות צוחק כדי להשתמש בתו הנקודה העשרונית של המקום בעת ניתוח קלט
נתונים. למרות שתקן POSIX דורש התנהגות זו, ו צוחק עושה זאת מתי
--posix בתוקף, ברירת המחדל היא לעקוב אחר התנהגות מסורתית ולהשתמש ב-a
נקודה כנקודה עשרונית, אפילו במקומות שבהם הנקודה אינה עשרונית
תו נקודתי. אפשרות זו עוקפת את התנהגות ברירת המחדל, ללא המלאה
הקפדה דרקונית של --posix אוֹפְּצִיָה.
-o[פילה]
--מודפס יפה[=פילה]
פלט גרסה מודפסת יפה של התוכנית ל פילה. אם לא פילה מסופק,
צוחק משתמש בקובץ בשם awkprof.out בספרייה הנוכחית.
-O
-- לייעל
אפשר אופטימיזציות על הייצוג הפנימי של התוכנית. כַּיוֹם,
זה כולל קיפול מתמיד פשוט, וביטול קריאות זנב עבור רקורסיבי
פונקציות. ה צוחק מתחזקת מקווה להוסיף אופטימיזציות נוספות לאורך זמן.
-p[קובץ פרופסור]
--פּרוֹפִיל[=קובץ פרופסור]
התחל הפעלת פרופיל ושלח את נתוני הפרופיל אל קובץ פרופסור. ברירת המחדל
is awkprof.out. הפרופיל מכיל ספירות ביצוע של כל הצהרה ב-
תוכנית בשוליים השמאליים וספירות קריאות לפונקציה עבור כל פונקציה המוגדרת על ידי המשתמש.
-P
--posix
זה נדלק תאימות מצב, עם ההגבלות הנוספות הבאות:
· \x רצפי בריחה אינם מזוהים.
· רק רווח וטאב משמשים כמפרידי שדות כאשר FS מוגדר לרווח בודד,
newline לא.
· לא ניתן להמשיך שורות לאחר מכן ? ו :.
· המילה הנרדפת func עבור מילת המפתח פונקציה אינו מוכר.
· המפעילים ** ו **= לא ניתן להשתמש במקום ^ ו ^=.
-r
מרווח מחדש
אפשר את השימוש ב הפסקה ביטויים בהתאמת ביטוי רגולרי (ראה רגיל
ביטויים, למטה). ביטויי מרווח לא היו זמינים באופן מסורתי ב-
שפת AWK. תקן POSIX הוסיף אותם, לעשות awk ו egrep עולה בקנה אחד עם
אחד את השני. הם מופעלים כברירת מחדל, אך אפשרות זו נשארת לשימוש עם
--מָסוֹרתִי.
-S
--ארגז חול
ריצות צוחק במצב ארגז חול, השבתת מערכת() פונקציה, הפניית קלט עם
getline, הפניית פלט עם הדפסה ו הדפס, וטעינת הרחבות דינמיות.
גם ביצוע פקודה (דרך צינורות) מושבת. זה למעשה חוסם את א
script מגישה למשאבים מקומיים (למעט הקבצים המצוינים ב-
שורת הפקודה).
-t
--ישן מוך
ספק אזהרות לגבי מבנים שאינם ניידים לגרסה המקורית של
UNIX awk.
-V
--גִרְסָה
מידע על גרסת הדפסה עבור עותק מסוים זה של צוחק על הפלט הסטנדרטי.
זה שימושי בעיקר כדי לדעת אם העותק הנוכחי של צוחק במערכת שלך פועל
עד היום ביחס לכל מה שהקרן לתוכנה חופשית מפיצה.
זה שימושי גם בעת דיווח על באגים. (לפי ה גנה סִמוּל תקנים, אלה
אפשרויות גורמות ליציאה מיידית ומוצלחת.)
-- סימן את סוף האפשרויות. זה שימושי כדי לאפשר טיעונים נוספים ל-AWK
תכנת את עצמה להתחיל עם "-". זה מספק עקביות עם הטיעון
מוסכמות ניתוח המשמשת את רוב תוכניות ה-POSIX האחרות.
במצב תאימות, כל אופציה אחרת מסומנת כלא חוקית, אך היא אחרת
התעלמו. בפעולה רגילה, כל עוד טקסט התוכנית מסופק, אפשרויות לא ידועות
מועברים לתוכנית AWK ב- ARGV מערך לעיבוד. זה במיוחד
שימושי להפעלת תוכניות AWK באמצעות ה-"#!" מנגנון מתורגמן בר הפעלה.
עבור תאימות POSIX, ה -W ניתן להשתמש באפשרות, ואחריה השם של אפשרות ארוכה.
AWK תָכְנִית ביצוע
תוכנית AWK מורכבת מרצף של הצהרות דפוס פעולה ופונקציה אופציונלית
הגדרות.
@לִכלוֹל "שם הקובץ"
@לִטעוֹן "שם הקובץ"
דפוס { פעולה הצהרות }
פונקציה שם(פרמטר רשימה) { הצהרות }
Gawk תחילה קורא את מקור התוכנית מה- מסמך תוכנית(s) אם צוין, מתוך ארגומנטים
ל --מָקוֹר, או מהארגומנט הראשון ללא אפשרות בשורת הפקודה. ה -f ו
--מָקוֹר ניתן להשתמש באפשרויות מספר פעמים בשורת הפקודה. Gawk קורא את התוכנית
טקסט כאילו כל מסמך תוכניתטקסטי מקור של s ושורת הפקודה היו משורשרים
יַחַד. זה שימושי לבניית ספריות של פונקציות AWK, ללא צורך
כלול אותם בכל תוכנית AWK חדשה שמשתמשת בהם. זה גם מספק את היכולת לערבב
פונקציות ספרייה עם תוכניות שורת פקודה.
בנוסף, שורות המתחילות ב @לִכלוֹל ניתן להשתמש כדי לכלול קבצי מקור אחרים לתוך
התוכנית שלך, מה שהופך את השימוש בספרייה לקל עוד יותר. זה שווה ערך לשימוש ב- -i אוֹפְּצִיָה.
שורות שמתחילות ב @לִטעוֹן עשוי לשמש לטעינת ספריות משותפות לתוכנית שלך. זֶה
שווה ערך לשימוש ב- -l אוֹפְּצִיָה.
משתנה הסביבה AWKPATH מציין נתיב חיפוש לשימוש בעת מציאת קובצי מקור
נקרא עם -f ו -i אפשרויות. אם משתנה זה אינו קיים, נתיב ברירת המחדל הוא
".:/usr/local/share/awk". (הספרייה בפועל עשויה להשתנות, בהתאם לאופן שבו צוחק היה
נבנה ומותקן.) אם שם קובץ ניתן ל- -f האפשרות מכילה תו "/", לא
חיפוש נתיב מתבצע.
משתנה הסביבה AWKLIBPATH מציין נתיב חיפוש לשימוש בעת מציאת מקור
קבצים המכונים עם ה- -l אוֹפְּצִיָה. אם משתנה זה אינו קיים, נתיב ברירת המחדל הוא
"/usr/local/lib/gawk". (הספרייה בפועל עשויה להשתנות, בהתאם לאופן שבו צוחק נבנה
ומותקן.)
Gawk מפעיל תוכניות AWK בסדר הבא. ראשית, כל ההקצאות המשתנות
שצוין דרך ה -v אפשרות מבוצעות. הַבָּא, צוחק מרכיב את התוכנית ל- an
צורה פנימית. לאחר מכן, צוחק מבצע את הקוד ב- התחל כללים (אם יש), ולאחר מכן
ממשיך לקרוא כל קובץ בשם ב- ARGV מערך (עד ARGV[ARGC]). אם אין
קבצים הנקראים בשורת הפקודה, צוחק קורא את הקלט הסטנדרטי.
אם שם קובץ בשורת הפקודה מכיל את הטופס היה=val מתייחסים אליו כאל משתנה
מְשִׁימָה. המשתנה היה יוקצה הערך val. (זה קורה אחרי כל
התחל כלל(ים) הופעלו.) הקצאת משתנה של שורת הפקודה שימושית ביותר עבור
הקצאה דינמית של ערכים למשתנים ש-AWK משתמשת בהם כדי לשלוט על אופן חלוקת הקלט
שדות ורשומות. זה גם שימושי לשליטה במצב אם יש צורך במספר מעברים
על קובץ נתונים בודד.
אם הערך של אלמנט מסוים של ARGV זה ריק (""), צוחק מדלג על זה.
עבור כל קובץ קלט, אם א התחל קובץ כלל קיים, צוחק מבצע את הקוד המשויך לפני
עיבוד תוכן הקובץ. באופן דומה, צוחק מבצע את הקוד המשויך אליו
ENDFILE לאחר עיבוד הקובץ.
עבור כל רשומה בקלט, צוחק בדיקות כדי לראות אם זה מתאים לאף אחד דפוס ב-AWK
תכנית. עבור כל דפוס שהרשומה תואמת, צוחק מבצע את המשויך פעולה.
הדפוסים נבדקים לפי סדר הופעתם בתוכנית.
לבסוף, לאחר מיצוי כל הקלט, צוחק מבצע את הקוד ב- הסוף כללים (אם
כל).
פיקוד קו מדריכים
על פי POSIX, קבצים הנקראים על awk שורת הפקודה חייבת להיות קבצי טקסט. ההתנהגות
הם ``לא מוגדרים'' אם הם לא. רוב הגרסאות של awk לטפל בספרייה בפקודה
שורה כשגיאה קטלנית.
החל מגרסה 4.0 של צוחק, ספרייה בשורת הפקודה מייצרת אזהרה, אבל
אחרת מדלגים. אם אחת מהן --posix or --מָסוֹרתִי ניתנות אם כך אפשרויות
צוחק חוזר להתייחס לספריות בשורת הפקודה כשגיאה קטלנית.
משתנים, רשומות ו שדות
משתני AWK הם דינמיים; הם נוצרים כאשר משתמשים בהם לראשונה. שֶׁלָהֶם
ערכים הם מספרי נקודה צפה או מחרוזות, או שניהם, תלוי איך הם
בשימוש. ל-AWK יש גם מערכים חד מימדיים; מערכים עם מימדים מרובים עשויים להיות
מדומה. Gawk מספק מערכים אמיתיים של מערכים; לִרְאוֹת מערכים, למטה. כמה מוגדרים מראש
משתנים מוגדרים כאשר תוכנית פועלת; אלה מתוארים לפי הצורך ומסוכמים להלן.
רשומות
בדרך כלל, רשומות מופרדות על ידי תווים בשורה חדשה. אתה יכול לשלוט איך הרשומות
מופרדים על ידי הקצאת ערכים למשתנה המובנה RS. אם RS הוא כל דמות בודדת,
הדמות הזו מפרידה בין רשומות. אחרת, RS הוא ביטוי רגולרי. טקסט ב-
קלט התואם את הביטוי הרגולרי הזה מפריד בין הרשומה. עם זאת, ב
במצב תאימות, רק התו הראשון של ערך המחרוזת שלו משמש להפרדה
רשומות. אם RS מוגדר למחרוזת null, ואז הרשומות מופרדות על ידי שורות ריקות.
מתי RS מוגדר למחרוזת null, תו השורה החדשה פועלת תמיד כמפריד שדות,
בנוסף לכל ערך שהוא FS ייתכן שיש לי.
שדות
כאשר כל רשומת קלט נקראת, צוחק מפצל את הרשומה ל שדות, תוך שימוש בערך של
FS משתנה כמפריד השדות. אם FS הוא תו בודד, השדות מופרדים על ידי
הדמות הזו. אם FS היא מחרוזת האפס, אז כל תו בודד הופך ל-a
שדה נפרד. אחרת, FS צפוי להיות ביטוי רגולרי מלא. בתוך ה
מקרה מיוחד ש FS הוא רווח בודד, השדות מופרדים על ידי ריצות של רווחים ו/או טאבים
ו/או שורות חדשות. (אבל עיין בסעיף POSIX תְאִימוּתלהלן). הערה: הערך של
התעלמות (ראה להלן) משפיע גם על אופן פיצול השדות מתי FS הוא ביטוי רגולרי,
וכיצד רשומות מופרדות מתי RS הוא ביטוי רגולרי.
אם רוחב שדות המשתנה מוגדר לרשימה מופרדת ברווחים של מספרים, כל שדה הוא
צפוי להיות רוחב קבוע, ו צוחק מפצל את הרשומה באמצעות הרוחבים שצוינו.
הערך של FS מתעלמים ממנו. הקצאת ערך חדש ל FS or FPAT עוקף את השימוש ב
רוחב שדות.
באופן דומה, אם ה FPAT המשתנה מוגדר למחרוזת המייצגת ביטוי רגולרי, כל אחד
השדה מורכב מטקסט התואם לאותו ביטוי רגולרי. במקרה זה, הרגיל
expression מתאר את השדות עצמם, במקום הטקסט שמפריד בין השדות.
הקצאת ערך חדש ל FS or רוחב שדות עוקף את השימוש ב FPAT.
ניתן להתייחס לכל שדה ברשומת הקלט לפי המיקום שלו: $1, $2, וכן הלאה. $0
הוא כל השיא. אין צורך להתייחס לשדות באמצעות קבועים:
n = 5
הדפסה $n
מדפיס את השדה החמישי ברשומת הקלט.
המשתנה NF מוגדר למספר הכולל של שדות ברשומת הקלט.
הפניות לשדות לא קיימים (כלומר, שדות לאחר $NF) מייצרים את המחרוזת null.
עם זאת, הקצאה לשדה לא קיים (למשל, $(NF+2) = 5) מעלה את הערך של NF,
יוצר שדות מתערבים עם מחרוזת null כערכים שלהם, וגורם לערך
of $0 לחשב מחדש, כאשר השדות מופרדים על ידי הערך של FSO. הפניות
לשדות ממוספרים שליליים גורמים לשגיאה קטלנית. מוריד NF גורם לערכים של
שדות מעבר לערך החדש שיאבד, והערך של $0 לחשב מחדש, עם ה
שדות מופרדים על ידי הערך של FSO.
הקצאת ערך לשדה קיים גורמת לבניית כל הרשומה מחדש כאשר $0 is
הפניה. באופן דומה, הקצאת ערך ל $0 גורם לרשומה להתפצל מחדש, וליצור
ערכים חדשים עבור השדות.
Built-in משתנים
Gawkהמשתנים המובנים של הם:
ARGC מספר הארגומנטים של שורת הפקודה (לא כולל אפשרויות ל צוחק, או
מקור התוכנית).
ארגינד המדד ב ARGV של הקובץ הנוכחי בעיבוד.
ARGV מערך ארגומנטים של שורת הפקודה. המערך מורכב מ-0 עד ARGC - 1.
שינוי דינמי של התוכן של ARGV יכול לשלוט בקבצים המשמשים לנתונים.
BINMODE במערכות שאינן POSIX, מציין שימוש במצב "בינארי" עבור כל ה-I/O של הקבצים.
ערכים מספריים של 1, 2 או 3, מציינים את קבצי הקלט, קבצי הפלט או כולם
קבצים, בהתאמה, צריכים להשתמש ב-I/O בינארי. ערכי מחרוזת של "ר", או "וו"
ציין שקובצי קלט, או קבצי פלט, בהתאמה, צריכים להשתמש בבינארי
I/O. ערכי מחרוזת של "rw" or "וור" ציין שכל הקבצים צריכים להשתמש בבינארי
I/O. כל ערך מחרוזת אחר יטופל כ "rw", אבל מייצר אזהרה
הוֹדָעָה.
CONVFMT פורמט ההמרה למספרים, "%6g", כברירת מחדל.
על אודות מערך המכיל את ערכי הסביבה הנוכחית. המערך הוא
באינדקס על ידי משתני הסביבה, כל אלמנט הוא הערך של זה
משתנה (למשל, ENVIRON["בית"] עשוי להיות "/בית/ארנולד"). שינוי מערך זה
אינו משפיע על הסביבה הנראית על ידי תוכניות אשר צוחק משריץ דרך
ניתוב מחדש או ה מערכת() פונקציה.
שגיאה אם מתרחשת שגיאת מערכת, בצע ניתוב מחדש עבור getline, במהלך קריאה
ל getline, או במהלך א סגור(), לאחר מכן שגיאה יכיל מחרוזת המתארת
הטעות. הערך כפוף לתרגום במקומות שאינם באנגלית.
רוחב שדות רשימה מופרדת עם רווחים לבנים של רוחבי שדות. כאשר מוגדר, צוחק מנתח את הקלט
לשדות ברוחב קבוע, במקום להשתמש בערך של FS משתנה כ
מפריד השדות. לִרְאוֹת שדותמעל.
שם קובץ שם קובץ הקלט הנוכחי. אם לא צוינו קבצים בפקודה
קו, הערך של שם קובץ הוא "-". למרות זאת, שם קובץ אינו מוגדר בתוך
התחל כלל (אלא אם נקבע על ידי getline).
FNR מספר רשומת הקלט בקובץ הקלט הנוכחי.
FPAT ביטוי רגולרי המתאר את תוכן השדות ברשומה. מתי
סט, צוחק מנתח את הקלט לשדות, כאשר השדות תואמים את הרגיל
ביטוי, במקום להשתמש בערך של FS משתנה בתור השדה
מפריד. לִרְאוֹת שדותמעל.
FS מפריד שדות הקלט, רווח כברירת מחדל. לִרְאוֹת שדותמעל.
FUNCTAB מערך שהמדדים והערכים המתאימים שלו הם שמות כל המשתמשים-
פונקציות מוגדרות או הרחבה בתוכנית. הערה: אסור להשתמש ב-
להסיר הצהרה עם FUNCTAB מערך.
התעלמות שולט ברגישות האותיות של כל הביטויים הרגולריים והמחרוזות.
If התעלמות יש ערך שאינו אפס, ולאחר מכן השוואות מחרוזות ודפוס
התאמה בכללים, פיצול שדה עם FS ו FPAT, שיא הפרדה עם
RS, ביטוי רגולרי תואם עם ~ ו !~, וה gensub(), gsub(),
אינדקס(), התאמה(), patsplit(), לְפַצֵל(), ו תַת() פונקציות מובנות כולן מתעלמות
מקרה בעת ביצוע פעולות ביטוי רגולרי. הערה: מנוי למערך הוא
לֹא מושפע. אולם, ה סוג של() ו asorti() פונקציות מושפעות.
לפיכך, אם התעלמות אינו שווה לאפס, /aB/ תואם את כל המיתרים
"אב", "aB", "אב", ו "AB". כמו בכל משתני AWK, הערך ההתחלתי של
התעלמות הוא אפס, כך שכל פעולות הביטוי הרגולרי והמחרוזת הן
בדרך כלל תלוי רישיות.
מוך מספק שליטה דינמית של --מוֹך אפשרות מתוך תוכנית AWK.
כשזה נכון, צוחק מדפיס אזהרות מוך. כששקר, זה לא. כאשר מוקצה
ערך המחרוזת "קָטלָנִי", אזהרות מוך הופכות לשגיאות קטלניות, בדיוק כמו
--lint=קטלני. כל ערך אמיתי אחר רק מדפיס אזהרות.
NF מספר השדות ברשומת הקלט הנוכחית.
NR המספר הכולל של רשומות קלט שנראו עד כה.
OFMT פורמט הפלט של מספרים, "%6g", כברירת מחדל.
FSO מפריד שדות הפלט, רווח כברירת מחדל.
ORS מפריד רשומות הפלט, כברירת מחדל שורה חדשה.
PREC דיוק העבודה של דיוק שרירותי של מספרי נקודה צפה, 53 ב
ברירת המחדל.
PROCINFO האלמנטים של מערך זה מספקים גישה למידע על ה-AWK הפועל
תכנית. במערכות מסוימות, עשויים להיות אלמנטים במערך, "קבוצה 1"
דרך "קְבוּצָהn" עבור חלק n, שהוא מספר הקבוצות המשלימות ש
לתהליך יש. להשתמש ב in מפעיל כדי לבדוק את האלמנטים האלה. ה
האלמנטים הבאים מובטחים להיות זמינים:
PROCINFO["egid"] הערך של getegid(2) שיחת מערכת.
PROCINFO["strftime"]
מחרוזת ברירת המחדל של פורמט הזמן עבור זמן עבודה ().
PROCINFO["euid"] הערך של geteuid(2) שיחת מערכת.
PROCINFO["FS"] "FS" אם פיצול שדה עם FS בתוקף, "FPAT" if
פיצול שדה עם FPAT בתוקף, או "רוחב שדות"
אם פיצול שדה עם רוחב שדות הוא בתוקף.
PROCINFO["מזהים"]
תת-מערך, המופיע באינדקס לפי שמות כל המזהים שבהם נעשה שימוש
בטקסט של תוכנית AWK. הערכים מציינים מה
צוחק יודע על המזהים לאחר סיום
ניתוח התוכנית; הם לֹא עודכן תוך כדי
התוכנית פועלת. עבור כל מזהה, הערך של ה-
אלמנט הוא אחד מהבאים:
"מַעֲרָך"
המזהה הוא מערך.
"בנוי"
המזהה הוא פונקציה מובנית.
"סיומת"
המזהה הוא פונקציית הרחבה הנטענת באמצעות
@לִטעוֹן or -l.
"סקלר"
המזהה הוא סקלרי.
"לא מודפס"
המזהה אינו מוקלד (יכול לשמש כ
סקלרי או מערך, צוחק עדיין לא יודע).
"מִשׁתַמֵשׁ" המזהה הוא פונקציה המוגדרת על ידי המשתמש.
PROCINFO["gid"] הערך של getgid(2) שיחת מערכת.
PROCINFO["pgrpid"] מזהה קבוצת התהליך של התהליך הנוכחי.
PROCINFO["pid"] מזהה התהליך של התהליך הנוכחי.
PROCINFO["ppid"] מזהה תהליך האב של התהליך הנוכחי.
PROCINFO["uid"] הערך של getuid(2) שיחת מערכת.
PROCINFO["ממוין_ב"]
אם אלמנט זה קיים ב PROCINFO, ואז הערך שלו
שולט בסדר שבו עוברים רכיבי מערך
in ל לולאות. ערכים נתמכים הם "@ind_str_asc",
"@ind_num_asc", "@val_type_asc", "@val_str_asc",
"@val_num_asc", "@ind_str_desc", "@ind_num_desc",
"@val_type_desc", "@val_str_desc", "@val_num_desc", ו
"@לא מסודר". הערך יכול להיות גם השם של כל אחד
פונקציית השוואה המוגדרת כדלקמן:
פונקציה cmp_func(i1, v1, i2, v2)
איפה i1 ו i2 הם המדדים, ו v1 ו v2 הם
ערכים תואמים של שני האלמנטים שמשווים.
זה אמור להחזיר מספר קטן מ, שווה או גדול
מ-0, תלוי איך הרכיבים של המערך אמורים
להיות מוזמן.
PROCINFO["קלט", "הפסקת קריאה"]
פסק הזמן באלפיות שניות לקריאת נתונים מ קלט,
איפה קלט הוא מחרוזת ניתוב מחדש או שם קובץ. ערך
של אפס או פחות מאפס פירושו שאין פסק זמן.
PROCINFO["mpfr_version"]
הגרסה של ספריית GNU MPFR המשמשת לשרירות
תמיכה במספר דיוק ב צוחק. ערך זה לא
קיים אם תמיכת MPFR אינה מורכבת לתוך צוחק.
PROCINFO["gmp_version"]
הגרסה של ספריית GNU MP המשמשת לשרירות
תמיכה במספר דיוק ב צוחק. ערך זה לא
קיים אם תמיכת MPFR אינה מורכבת לתוך צוחק.
PROCINFO["prec_max"]
הדיוק המרבי הנתמך על ידי ספריית GNU MPFR
למספרי נקודה צפה דיוק שרירותי. זֶה
הערך אינו קיים אם תמיכת MPFR אינה מורכבת לתוך
צוחק.
PROCINFO["prec_min"]
הדיוק המינימלי המותר על ידי ספריית GNU MPFR עבור
מספרי נקודה צפה דיוק שרירותי. ערך זה הוא
לא קיים אם תמיכת MPFR אינה מורכבת לתוך צוחק.
PROCINFO["api_major"]
הגרסה העיקרית של ה-API של ההרחבה. ערך זה לא
קיים אם טעינת הרחבות דינמיות אינה זמינה.
PROCINFO["api_minor"]
הגרסה המשנית של ה-API של ההרחבה. ערך זה לא
קיים אם טעינת הרחבות דינמיות אינה זמינה.
PROCINFO["גרסה"] הגרסה של צוחק.
ROUNDMODE מצב העיגול לשימוש עבור אריתמטיקה דיוק שרירותי על מספרים, על ידי
ברירת מחדל "N" (מצב IEEE-754 roundTiesToEven). הערכים המקובלים הם "N" or
"נ" עבור roundTiesToEven, "אוֹ" or "אתה" עבור roundTowardPositive, "D" or "d" ל
roundTowardNegative, "Z" or "ז" עבור roundTowardZero, ואם הגרסה שלך של
ספריית GNU MPFR תומכת בזה, "ל" or "א" עבור roundTiesToAway.
RS מפריד רשומות הקלט, כברירת מחדל שורה חדשה.
RT מסיים השיא. Gawk סטים RT לטקסט הקלט שתאם את
תו או ביטוי רגולרי שצוין על ידי RS.
RSTART האינדקס של התו הראשון המותאם על ידי התאמה(); 0 אם אין התאמה. (זֶה
מרמז כי מדדי תווים מתחילים באחד.)
RLENGTH אורך המחרוזת תואם על ידי התאמה(); -1 אם אין התאמה.
SUBSEP התו המשמש להפרדה בין מספר כתוביות משנה ברכיבי מערך, על ידי
ברירת מחדל "\034".
SYMTAB מערך שהמדדים שלו הם שמות כל המשתנים הגלובאליים המוגדרים כעת
ומערכים בתוכנית. המערך עשוי לשמש לגישה עקיפה לקריאה
או כתוב את הערך של משתנה:
Foo = 5
SYMTAB["פו"] = 4
הדפסה Foo # הדפסים 4
השמיים isarray() ניתן להשתמש בפונקציה כדי לבדוק אם רכיב ב SYMTAB הוא
מַעֲרָך. אינך רשאי להשתמש ב- להסיר הצהרה עם SYMTAB מערך.
TEXTDOMAIN תחום הטקסט של תוכנית AWK; משמש למציאת התרגומים המקומיים
עבור מחרוזות התוכנית.
מערכים
מערכים מנויים עם ביטוי בין סוגריים מרובעים ([ ו ]). אם ה
ביטוי הוא רשימת ביטויים (ביטוי, ביטוי ...) אז המערך המשנה הוא מחרוזת
המורכב משרשור של הערך (מחרוזת) של כל ביטוי, מופרד על ידי ה-
ערך ה- SUBSEP מִשְׁתַנֶה. מתקן זה משמש כדי לדמות מרובה ממדים
מערכים. לדוגמה:
i = "א"; j = "ב"; k = "ג"
x[i, j, k] = "שלום, עולם\n"
מקצה את המחרוזת "שלום, עולם\n" לאלמנט של המערך x אשר מתווסף על ידי ה
מחרוזת "A\034B\034C". כל המערכים ב-AWK הם אסוציאטיביים, כלומר מתווספים לאינדקס על ידי ערכי מחרוזת.
המפעיל המיוחד in ניתן להשתמש כדי לבדוק אם למערך יש אינדקס המורכב מ-a
ערך מסוים:
if (val in מַעֲרָך)
הדפסה מערך[val]
אם למערך יש מספר מנויים, השתמש (אני, j) in מערך.
השמיים in ניתן להשתמש במבנה גם ב- a ל לולאה כדי לחזור על כל האלמנטים של an
מַעֲרָך. אולם, ה (אני, j) in מערך construct עובד רק בבדיקות, לא ב ל לולאות.
ניתן למחוק אלמנט ממערך באמצעות ה- להסיר הַצהָרָה. ה להסיר הצהרה
ניתן להשתמש גם כדי למחוק את כל התוכן של מערך, רק על ידי ציון המערך
שם ללא מנוי.
צוחק תומך במערכים רב מימדיים אמיתיים. זה לא מחייב שמערכים כאלה יהיו
``מלבני'' כמו ב-C או C++. לדוגמה:
[1] = 5
a[2][1] = 6
a[2][2] = 7
הערה: אולי תצטרך לספר צוחק שאלמנט מערך הוא באמת תת-מערך על מנת להשתמש בו
זה איפה צוחק מצפה למערך (כגון בארגומנט השני ל לְפַצֵל()). אתה יכול לעשות
זאת על ידי יצירת אלמנט בתת-מערך ולאחר מכן מחיקתו באמצעות ה- להסיר
הצהרה.
מִשְׁתַנֶה הקלדה ו המרה
משתנים ושדות עשויים להיות מספרים (נקודה צפה), או מחרוזות, או שניהם. איך הערך
של משתנה מתפרש תלוי בהקשר שלו. אם משתמשים בביטוי מספרי,
זה יטופל כמספר; אם הוא משמש כמחרוזת, הוא יטופל כמחרוזת.
כדי לאלץ להתייחס למשתנה כמספר, הוסף לו 0; לאלץ להתייחס אליו כאל א
מחרוזת, שרשרת אותה עם מחרוזת האפס.
למשתנים לא מאותחלים יש את הערך המספרי 0 ואת ערך המחרוזת "" (הערך null, או
ריק, מחרוזת).
כאשר יש להמיר מחרוזת למספר, ההמרה מתבצעת באמצעות
strtod(3). מספר מומר למחרוזת באמצעות הערך של CONVFMT כפורמט
מחרוזת עבור ספרינטף(3), עם הערך המספרי של המשתנה כארגומנט. למרות זאת,
למרות שכל המספרים ב-AWK הם נקודה צפה, ערכים אינטגרלים כן תמיד הומר כ
מספרים שלמים. לפיכך, נתון
CONVFMT = "%2.2f"
a = 12
b = a ""
המשתנה b יש ערך מחרוזת של "12" ולא "12.00".
הערה: כאשר פועלים במצב POSIX (כגון עם --posix אפשרות), היזהרו מהמקום הזה
ההגדרות עלולות להפריע לאופן הטיפול במספרים עשרוניים: המפריד העשרוני של
המספרים שאתה ניזון אליהם צוחק חייב להתאים למה שהמקום שלך היה מצפה, יהיה זה א
פסיק (,) או נקודה (.).
Gawk מבצע השוואות באופן הבא: אם שני משתנים הם מספריים, הם מושווים
מבחינה מספרית. אם ערך אחד הוא מספרי ולשני יש ערך מחרוזת שהוא "מספרי
מחרוזת," אז ההשוואות נעשות גם באופן מספרי. אחרת, הערך המספרי הוא
מומר למחרוזת ומבוצעת השוואת מיתרים. שתי מחרוזות מושווים, של
כמובן, כמחרוזות.
שים לב שקבועי מחרוזת, כגון "57", הם לֹא מחרוזות מספריות, הן מחרוזות
קבועים. הרעיון של "מחרוזת מספרית" חל רק על שדות, getline קלט, שם קובץ,
ARGV אלמנטים, על אודות אלמנטים והאלמנטים של מערך שנוצר על ידי לְפַצֵל() or
patsplit() שהן מחרוזות מספריות. הרעיון הבסיסי הוא זה המשתמש קלט, ורק משתמש
יש להתייחס לקלט, שנראה מספרי, כך.
אוקטלי ו הקסאדצימלי קבועים
אתה יכול להשתמש בקבועים אוקטליים והקסדצימליים בסגנון C בקוד המקור של תוכנית AWK שלך. ל
לדוגמה, הערך האוקטלי 011 שווה לעשרוני 9, והערך ההקסדצימלי 0x11 is
שווה ל-17 עשרוני.
מחרוזת קבועים
קבועי מחרוזת ב-AWK הם רצפים של תווים כלואים בין גרשיים כפולים (כמו
"ערך"). בתוך מיתרים, בטוח לברוח רצפים מוכרים, כמו ב-C. אלה הם:
\\ קו נטוי תרתי משמע.
\a הדמות "התראה"; בדרך כלל תו ASCII BEL.
\b מקש לחזור אחורה.
\f טופס הזנה.
\n שורה חדשה.
\r החזרת כרכרה.
\t לשונית אופקית.
\v לשונית אנכית.
\xhex ספרות
התו המיוצג על ידי מחרוזת הספרות הקסדצימליות שאחרי ה- \x. כמו
ב-ISO C, כל הספרות ההקסדצימליות הבאות נחשבות לחלק מהבריחה
סדר פעולות. (תכונה זו אמורה לספר לנו משהו על עיצוב שפה מאת
ועדה.) למשל, "\x1B" הוא תו ASCII ESC (בריחה).
\ddd התו המיוצג על ידי רצף בן 1, 2 או 3 ספרות של ספרות אוקטליות. לְמָשָׁל,
"\033" הוא תו ASCII ESC (בריחה).
\c הדמות המילולית c.
ניתן להשתמש ברצפי הבריחה גם בתוך ביטויים רגולריים קבועים (למשל,
/[ \t\f\n\r\v]/ תואם תווי רווח לבן).
במצב תאימות, התווים המיוצגים על ידי אסקייפ אוקטלי והקסדצימלי
רצפים מטופלים באופן מילולי כאשר משתמשים בקבועי ביטוי רגולרי. לכן, /a\52b/
שווה /a\*b/.
כתמים ו פעולות
AWK היא שפה מכוונת קו. התבנית באה קודם, ואחר כך הפעולה. פעולה
הצהרות מצורפות ב { ו }. ייתכן שהתבנית חסרה, או שהפעולה עשויה להיות
להיות חסר, אבל, כמובן, לא שניהם. אם התבנית חסרה, הפעולה מבוצעת
עבור כל רשומה של קלט. פעולה חסרה שווה ערך ל
{ הדפסה }
שמדפיס את כל הרשומה.
הערות מתחילות ב- # תו, וממשיכים עד סוף השורה. קווים ריקים
עשוי לשמש להפרדה בין הצהרות. בדרך כלל, הצהרה מסתיימת בשורה חדשה, עם זאת,
זה לא המקרה עבור שורות המסתיימות בפסיק, {, ?, :, &&, או ||. שורות המסתיימות ב do
or אחר גם ההצהרות שלהם ממשיכות אוטומטית בשורה הבאה. ב
במקרים אחרים, ניתן להמשיך שורה על-ידי סיומו ב-"\", ובמקרה זה השורה החדשה
התעלם.
ניתן לשים הצהרות מרובות בשורה אחת על ידי הפרדתן ב-";". זה חל על
גם ההצהרות בתוך חלק הפעולה של צמד דפוס-פעולה (המקרה הרגיל), וגם
להצהרות דפוס פעולה עצמן.
דפוסי
דפוסי AWK עשויים להיות אחד מהבאים:
התחל
הסוף
התחל קובץ
ENDFILE
/רגיל ביטוי/
יחסיות ביטוי
דפוס && דפוס
דפוס || דפוס
דפוס ? דפוס : דפוס
(דפוס)
! דפוס
pattern1, pattern2
התחל ו הסוף הם שני סוגים מיוחדים של דפוסים שאינם נבדקים מול הקלט.
חלקי הפעולה של כולם התחל דפוסים מתמזגים כאילו כל ההצהרות היו
כתוב בסינגל התחל כְּלָל. הם מבוצעים לפני קריאת כל הקלט.
באופן דומה, כל הסוף הכללים מתמזגים ומבוצעים כאשר כל הקלט מוצה (או
כאשר יציאה ההצהרה מבוצעת). התחל ו הסוף לא ניתן לשלב דפוסים עם אחרים
דפוסים בביטויי דפוס. התחל ו הסוף דפוסים לא יכולים להכיל חלקי פעולה חסרים.
התחל קובץ ו ENDFILE הם דפוסים מיוחדים נוספים שגופם הוצא להורג לפני כן
קריאת הרשומה הראשונה של כל קובץ קלט בשורת הפקודה ולאחר קריאת הרשומה האחרונה
של כל קובץ. בתוך ה התחל קובץ כלל, ערכו של שגיאה תהיה המחרוזת הריקה אם
הקובץ נפתח בהצלחה. אחרת, יש בעיה כלשהי בקובץ וב-
צריך להשתמש בקוד קובץ הבא לדלג עליו. אם זה לא נעשה, צוחק מייצר את הקטלני הרגיל שלו
שגיאה עבור קבצים שלא ניתן לפתוח.
בעד /רגיל ביטוי/ תבניות, ההצהרה הקשורה מבוצעת עבור כל קלט
רשומה שתואמת לביטוי הרגולרי. ביטויים רגולריים זהים לאלו שב
egrep(1), והם מסוכמים להלן.
A יחסיות ביטוי רשאי להשתמש בכל אחד מהמפעילים המוגדרים להלן בסעיף על
פעולות. אלה בדרך כלל בודקים אם שדות מסוימים תואמים ביטויים רגולריים מסוימים.
השמיים &&, ||, ו ! אופרטורים הם AND לוגיים, OR לוגיים ו-NOL לוגיים, בהתאמה,
כמו ב-C. הם עושים הערכת קצר חשמלי, גם כמו ב-C, ומשמשים לשילוב של עוד
ביטויי דפוס פרימיטיביים. כמו ברוב השפות, ניתן להשתמש בסוגריים כדי לשנות
סדר ההערכה.
השמיים ?: האופרטור הוא כמו אותו אופרטור ב-C. אם התבנית הראשונה נכונה אז ה-
דפוס המשמש לבדיקה הוא הדפוס השני, אחרת הוא השלישי. רק אחד מ
הדפוס השני והשלישי מוערך.
השמיים pattern1, pattern2 צורת ביטוי נקראת א רכס דפוס. זה תואם את כולם
רשומות הזנה המתחילות ברשומה שתואמת pattern1, וממשיכים עד לשיא
זה מתאים pattern2, כולל. זה לא משתלב עם כל סוג אחר של דפוס
ביטוי.
רגיל ביטויים
ביטויים רגולריים הם מהסוג המורחב שנמצא ב egrep. הם מורכבים מדמויות
באופן הבא:
c מתאים לאות המטא c.
\c תואם את הדמות המילולית c.
. מתאים לכל דמות לְרַבּוֹת שורה חדשה.
^ מתאים לתחילתה של מחרוזת.
$ מתאים לקצה של מחרוזת.
[א ב ג...] רשימת תווים: מתאימה לכל אחת מהתווים א ב ג.... אתה יכול לכלול א
טווח של תווים על ידי הפרדתם באמצעות מקף.
[^א ב ג...] רשימת תווים מבוטלת: מתאימה לכל תו מלבד א ב ג....
r1|r2 לחילופין: מתאים גם r1 or r2.
r1r2 שרשור: גפרורים r1, ולאחר מכן r2.
r+ מתאים לאחד או יותר rשל.
r* מתאים לאפס או יותר rשל.
r? מתאים לאפס או אחד rשל.
(r) קיבוץ: גפרורים r.
r{n}
r{n,}
r{n,m} מספר אחד או שניים בתוך הסוגרים מציינים את an הפסקה ביטוי. אם יש
מספר אחד בסוגרים, הביטוי הרגולרי הקודם r חוזר n
פִּי. אם יש שני מספרים מופרדים בפסיק, r חוזר n ל m
פִּי. אם יש מספר אחד ואחריו פסיק, אז r חוזר על עצמו לפחות
n פעמים.
\y מתאים למחרוזת הריקה בתחילת או בסוף מילה.
\B מתאים למחרוזת הריקה בתוך מילה.
\< מתאים למחרוזת הריקה בתחילת מילה.
\> מתאים למחרוזת הריקה בסוף מילה.
\s מתאים לכל תו של רווח לבן.
\S מתאים לכל תו שאינו רווח לבן.
\w מתאים לכל תו המרכיב את המילה (אות, ספרה או קו תחתון).
\W מתאים לכל תו שאינו מרכיב מילה.
\` מתאים למחרוזת הריקה בתחילת מאגר (מחרוזת).
\' מתאים למחרוזת הריקה בסוף מאגר.
רצפי הבריחה תקפים בקבועי מחרוזת (ראה מחרוזת קבועים) הם גם
תקף בביטויים רגולריים.
אופי כיתות הם תכונה שהוצגה בתקן POSIX. כיתת דמות היא א
סימון מיוחד לתיאור רשימות של תווים שיש להם תכונה ספציפית, אבל
כאשר הדמויות בפועל יכולות להשתנות ממדינה למדינה ו/או ממנה
סט תווים לקבוצת תווים. לדוגמה, הרעיון של מה זה אלפביתי
האופי שונה בארה"ב ובצרפת.
מחלקת תווים תקפה רק בביטוי רגולרי בתוך סוגריים של דמות
רשימה. שיעורי אופי מורכבים מ [:, מילת מפתח המציינת את המחלקה, ו :]. ה
מחלקות תווים המוגדרות על ידי תקן POSIX הן:
[:alnum:] אותיות אלפא - נומריות.
[:alpha:] תווים אלפביתיים.
[:רֵיק:] תווי רווח או טאב.
[:cntrl:] דמויות בקרה.
[:סִפְרָה:] תווים מספריים.
[:גרָף:] תווים שניתנים להדפסה וגם גלויים. (ניתן להדפסה רווח, אבל לא
גלוי, בעוד א a הוא גם וגם.)
[:נמוך יותר:] תווים אלפביתיים קטנים.
[:הדפס:] תווים להדפסה (תווים שאינם תווי בקרה).
[:punct:] תווי פיסוק (תווים שאינם אותיות, ספרות, פקד
תווים, או תווי רווח).
[:מֶרחָב:] תווי רווח (כגון רווח, טאב ו-formfeed, אם להזכיר כמה).
[:עֶלִיוֹן:] תווים אלפביתיים גדולים.
[:xdigit:] תווים שהם ספרות הקסדצימליות.
לדוגמה, לפני תקן POSIX, כדי להתאים תווים אלפאנומריים, היית צריך
היה צריך לכתוב /[A-Za-z0-9]/. אם בסט התווים שלך היו תווים אלפביתיים אחרים,
זה לא יתאים להם, ואם ערכת הדמויות שלך התאספה אחרת מ-ASCII, זה
אולי אפילו לא תואמים לתווים האלפאנומריים של ASCII. עם מחלקות התווים POSIX,
אתה יכול לכתוב /[[:alnum:]]/, וזה תואם את התווים האלפביתיים והמספריים ב
מערכת הדמויות שלך, לא משנה מה היא.
שני רצפים מיוחדים נוספים יכולים להופיע ברשימות תווים. אלה חלים על לא-ASCII
ערכות תווים, שיכולות לכלול סמלים בודדים (נקראים איסוף אלמנטים) כלומר
מיוצג עם יותר מדמות אחת, כמו גם כמה דמויות שכן
שווה ערך עבור איסוף, או מיון, מטרות. (למשל, בצרפתית, "e" רגיל וא
"`" בהדגשת קבר מקבילים.)
איסוף סמלים
סמל איסוף הוא רכיב איסוף מרובה תווים המוקף ב [. ו .].
לדוגמה, אם ch הוא מרכיב איסוף, אם כן [[.ch.]] הוא ביטוי רגולרי
שמתאים לאלמנט האיסוף הזה, בעוד [ch] הוא ביטוי רגולרי ש
גם התאמות c or h.
שיעורי שוויון
מחלקה שקילות היא שם ספציפי לאזור עבור רשימה של תווים שהם
שווה ערך. השם מוקף ב [= ו =]. למשל, השם e עשוי להיות
משמש לייצג את כל ה-"e", "´" ו-"`". במקרה הזה, [[=e=]] הוא קבוע
ביטוי שמתאים לכל אחד מהם e, ה', או e`.
לתכונות אלו יש ערך רב באזורים שאינם דוברי אנגלית. הספרייה מתפקדת
זֶה צוחק שימושים בהתאמת ביטויים רגולריים מזהים כרגע רק תו POSIX
שיעורים; הם אינם מזהים איסוף סמלים או כיתות שקילות.
השמיים \y, \B, \<, \>, \s, \S, \w, \W, \`, ו \' מפעילים ספציפיים ל צוחק; הם
הרחבות המבוססות על מתקנים בספריות הביטויים הרגילים של GNU.
אפשרויות שורת הפקודה השונות שולטות כיצד צוחק מפרש תווים ברגיל
ביטויים.
אין אפשרויות
במקרה ברירת המחדל, צוחק מספק את כל המתקנים של ביטויים רגולריים של POSIX
ואופרטורי הביטוי הרגולרי של GNU שתוארו לעיל.
--posix
רק ביטויים רגולריים של POSIX נתמכים, האופרטורים של GNU אינם מיוחדים.
(לְמָשָׁל, \w תואם מילולית w).
--מָסוֹרתִי
UNIX מסורתי awk ביטויים רגולריים מותאמים. המפעילים של GNU לא
מיוחד, וביטויי מרווח אינם זמינים. תווים המתוארים לפי אוקטלי
ורצפי בריחה הקסדצימליים מטופלים באופן מילולי, גם אם הם מייצגים
מטא-תווים של ביטוי רגולרי.
מרווח מחדש
אפשר ביטויי מרווחים בביטויים רגולריים, גם אם --מָסוֹרתִי כבר
בתנאי.
פעולות
הצהרות פעולה מוקפות בסוגריים, { ו }. הצהרות פעולה מורכבות מהרגיל
הצהרות הקצאה, מותנות ולולאה שנמצאות ברוב השפות. המפעילים,
הצהרות בקרה, והצהרות קלט/פלט זמינות מעוצבות בדוגמת אלה שב-C.
מפעילים
האופרטורים ב-AWK, לפי סדר עדיפות יורד, הם:
(...) הַקבָּצָה
$ הפניה לשדה.
++ -- הגדלה והקטנה, הן קידומת והן לאחר תיקון.
^ אקספוננציציה (** ניתן להשתמש גם, ו **= עבור מפעיל המשימה).
+ - ! Unary Plus, Unary Minus, ושלילה לוגית.
* / % כפל, חילוק ומודולוס.
+ - חיבור וחיסור.
שטח שרשרת מחרוזת.
| |& קלט/פלט צנרת עבור getline, הדפסה, ו הדפס.
< > <= >= != ==
המפעילים היחסיים הרגילים.
~ !~ התאמה לביטוי רגולרי, התאמה מבוטלת. הערה: אל תשתמש קבוע קבוע
ביטוי (/foo/) בצד שמאל של א ~ or !~. השתמש רק באחד על
צד ימין. הביטוי /foo/ ~ exp יש את אותה משמעות כמו (($0 ~
/foo/) ~ exp). זה בדרך כלל לֹא מה אתה רוצה.
in חברות במערך.
&& AND הגיוני.
|| OR לוגי.
?: הביטוי המותנה C. יש לזה את הצורה expr1 ? expr2 : expr3. אם
expr1 נכון, הערך של הביטוי הוא expr2אחרת זה כן expr3.
רק אחד מ expr2 ו expr3 מוערך.
= += -= *= /= %= ^=
מְשִׁימָה. שניהם משימה מוחלטת (היה = ערך) והקצאת מפעיל
(הצורות האחרות) נתמכות.
שליטה דוחות
הצהרות הבקרה הן כדלקמן:
if (מצב) הצהרה [ אחר הצהרה ]
בזמן (מצב) הצהרה
do הצהרה בזמן (מצב)
ל (expr1; expr2; expr3) הצהרה
ל (היה in מערך) הצהרה
לשבור
להמשיך
להסיר מערך[מדד]
להסיר מערך
יציאה [ ביטוי ]
{ הצהרות }
להחליף (ביטוי) {
מקרה ערך|regex : הצהרה
...
[ ברירת מחדל: הצהרה ]
}
I / O דוחות
הצהרות הקלט/פלט הן כדלקמן:
סגור(פילה [, אֵיך]) סגור קובץ, צינור או תהליך משותף. האופציונלי אֵיך צריך להיות רק
משמש בעת סגירת קצה אחד של צינור דו-כיווני לתהליך משותף. זה
חייב להיות גם ערך מחרוזת "ל" or "מ".
getline לקבוע $0 מתוך רשומת הקלט הבאה; מַעֲרֶכֶת NF, NR, FNR, RT.
getline <פילה לקבוע $0 מהרשומה הבאה של פילה; מַעֲרֶכֶת NF, RT.
getline היה לקבוע היה מתוך רשומת הקלט הבאה; מַעֲרֶכֶת NR, FNR, RT.
getline היה <פילה לקבוע היה מהרשומה הבאה של פילה, RT.
הפקודה | getline [היה]
הפעלה הפקודה צנרת את הפלט לתוך $0 or היה, כמו לעיל, ו
RT.
הפקודה |& getline [היה]
הפעלה הפקודה כתהליך משותף המצרף את הפלט אל $0 or היה,
כנ"ל, ו RT. תהליכים משותפים הם א צוחק סיומת. (הפקודה יכול
גם להיות שקע. עיין בסעיף המשנה מיוחד שלח שמות, למטה.)
הבא הפסק לעבד את רשומת הקלט הנוכחית. רשומת הקלט הבאה היא
הקריאה והעיבוד מתחילים מחדש עם הדפוס הראשון ב-AWK
תכנית. בהגיעו לסוף נתוני הקלט, צוחק מבצע כל
הסוף כלל(ים).
קובץ הבא הפסק לעבד את קובץ הקלט הנוכחי. רשומת הקלט הבאה נקראה
מגיע מקובץ הקלט הבא. שם קובץ ו ארגינד מתעדכנים,
FNR מאופס ל-1, והעיבוד מתחיל מחדש עם התבנית הראשונה
בתוכנית AWK. בהגיעו לסוף נתוני הקלט, צוחק
מבצע כל הסוף כלל(ים).
הדפסה הדפס את הרשומה הנוכחית. רשומת הפלט מסתיימת עם ה-
ערך של ORS.
הדפסה expr-list ביטויי הדפסה. כל ביטוי מופרד בערך של
FSO. רשומת הפלט מסתיימת עם הערך של ORS.
הדפסה expr-list >פילה הדפס ביטויים על פילה. כל ביטוי מופרד על ידי ה
ערך של FSO. רשומת הפלט מסתיימת עם הערך של
ORS.
הדפס fmt, expr-list פורמט והדפס. לִרְאוֹת השמיים הדפס הצהרה, להלן.
הדפס fmt, expr-list >פילה
פורמט והדפס על פילה.
מערכת(שורת cmd) בצע את הפקודה שורת cmd, ולהחזיר את מצב היציאה. (זה אולי
לא יהיה זמין במערכות שאינן POSIX.)
flush([פילה]) יש לשטוף את כל המאגרים המשויכים לקובץ הפלט הפתוחים או לצינור פילה.
If פילה חסר או אם זו מחרוזת האפס, שטף הכל פתוח
קבצי פלט וצינורות.
ניתנים להפניות מחדש של פלט נוספות הדפסה ו הדפס.
הדפסה ... >> פילה
מוסיף פלט ל- פילה.
הדפסה ... | הפקודה
כותב על צינור.
הדפסה ... |& הפקודה
שולח נתונים לתהליך משותף או לשקע. (ראה גם סעיף המשנה מיוחד שלח שמות,
לְהַלָן.)
השמיים getline הפקודה מחזירה 1 על הצלחה, 0 בסוף הקובץ ו-1 על שגיאה. על
שְׁגִיאָה, שגיאה מוגדר למחרוזת המתארת את הבעיה.
הערה: כשל בפתיחת שקע דו-כיווני מביא להחזרה לשגיאה לא קטלנית
פונקציית ההתקשרות. אם משתמשים בצינור, עיבוד משותף או שקע כדי getline, או מ- הדפסה or
הדפס בתוך לולאה, אתה צריך להשתמש סגור() כדי ליצור מופעים חדשים של הפקודה או
שֶׁקַע. AWK אינו סוגר אוטומטית צינורות, שקעים או תהליכים משותפים כשהם חוזרים
EOF.
השמיים הדפס הצהרה
גרסאות ה-AWK של הדפס הצהרה ו sprintf () פונקציה (ראה להלן) קבל את
הפורמטים הבאים של מפרט ההמרות:
%c דמות אחת. אם הטיעון משמש עבור %c הוא מספרי, מתייחסים אליו כאל א
תו ומודפס. אחרת, ההנחה היא שהארגומנט הוא מחרוזת, וה-
רק התו הראשון של המחרוזת הזו מודפס.
%d, %i מספר עשרוני (החלק השלם).
%e, %E מספר נקודה צפה של הטופס [-]d.dddddde[+-]dd. ה %E שימושים בפורמט E
במקום e.
%f, %F מספר נקודה צפה של הטופס [-]ddd.dddddd. אם ספריית המערכת תומכת
זה, %F זמין גם כן. זה כמו %f, אבל משתמש באותיות גדולות עבור מיוחד
ערכי "לא מספר" ו"אינסוף". אם %F לא זמין, צוחק שימושים %f.
%g, %G השתמש %e or %f המרה, הקצר מביניהם, עם אפסים לא מובהקים
מדוכא. ה %G שימושים בפורמט %E במקום %e.
%o מספר אוקטלי ללא סימן (גם מספר שלם).
%u מספר עשרוני ללא סימן (שוב, מספר שלם).
%s מחרוזת תווים.
%x, %X מספר הקסדצימלי ללא סימן (מספר שלם). ה %X שימושים בפורמט ABCDEF במקום
א ב ג ד ה ו.
%% אחת % אופי; שום טיעון לא מומר.
אופציונלי, פרמטרים נוספים עשויים להיות בין % ומכתב הבקרה:
לספור$ השתמש לספורהארגומנט 'בשלב זה של העיצוב. זה נקרא א
מקומי - ומיועד בעיקר לשימוש בגרסאות מתורגמות של
פורמט מחרוזות, לא בטקסט המקורי של תוכנית AWK. זה צוחק
סיומת.
- הביטוי צריך להיות מוצדק בשמאל בתחומו.
שטח עבור המרות מספריות, הקדמת ערכים חיוביים עם רווח וערכים שליליים
עם סימן מינוס.
+ סימן הפלוס, המשמש לפני משנה הרוחב (ראה להלן), אומר לספק תמיד א
סימן להמרות מספריות, גם אם הנתונים שיש לעצב הם חיוביים. ה +
עוקף את משנה החלל.
# השתמש ב"טופס חלופי" עבור אותיות בקרה מסוימות. ל %o, לספק מוביל
אֶפֶס. ל %x, ו %X, לספק מוביל 0x or 0X לתוצאה שאינה אפס. ל %e, %E,
%f ו %F, התוצאה מכילה תמיד נקודה עשרונית. ל %g, ו %G, נגרר
אפסים אינם מוסרים מהתוצאה.
0 הובלה 0 (אפס) פועל כדגל, המציין שהפלט צריך להיות מרופד
אפסים במקום רווחים. זה חל רק על פורמטי הפלט המספריים. זֶה
לדגל יש השפעה רק כאשר רוחב השדה רחב יותר מהערך שיודפס.
' תו ציטוט בודד מורה צוחק כדי להכניס את מפריד האלפים של המקום
תו למספרים עשרוניים, ולהשתמש גם בנקודה העשרונית של המקום
תו עם פורמטים של נקודה צפה. זה דורש תמיכה מקומית נכונה ב-
ספריית C ובהגדרת המקום הנוכחי.
רוחב יש לרפד את השדה ברוחב הזה. השדה בדרך כלל מרופד
רווחים. עם ה 0 דגל, הוא מרופד באפסים.
.הקודם מספר המציין את הדיוק לשימוש בעת ההדפסה. בשביל ה %e, %E, %f ו
%F, פורמטים, זה מציין את מספר הספרות שברצונך להדפיס מימין להן
הנקודה העשרונית. בשביל ה %g, ו %G פורמטים, הוא מציין את המספר המרבי של
ספרות משמעותיות. בשביל ה %d, %i, %o, %u, %x, ו %X פורמטים, הוא מציין את
מספר מינימלי של ספרות להדפסה. ל %s, הוא מציין את המספר המרבי של
תווים מהמחרוזת שיש להדפיס.
הדינמיקה רוחב ו הקודם היכולות של ISO C printf () שגרות נתמכות. א *
במקום או ה רוחב or הקודם מפרטים גורמים לכך שהערכים שלהם נלקחים מהם
רשימת הטיעונים ל הדפס or sprintf (). כדי להשתמש במפרט מיקום עם דינמיקה
רוחב או דיוק, לספק את לספור$ לאחר * במחרוזת הפורמט. לדוגמה,
"%3$*2$.*1$s".
מיוחד שלח שמות
בעת ביצוע ניתוב מחדש של I/O מכל אחד מהם הדפסה or הדפס לתוך קובץ, או באמצעות getline מ
קובץ, צוחק מזהה שמות קבצים מיוחדים מסוימים באופן פנימי. שמות קבצים אלו מאפשרים גישה
לפתיחת מתארי קבצים שעברו בירושה צוחקתהליך האב של (בדרך כלל המעטפת). אלה
ניתן להשתמש בשמות קבצים גם בשורת הפקודה כדי לתת שם לקבצי נתונים. שמות הקבצים הם:
- הקלט הסטנדרטי.
/dev/stdin הקלט הסטנדרטי.
/dev/stdout הפלט הסטנדרטי.
/dev/stderr פלט השגיאה הסטנדרטי.
/dev/fd/n הקובץ המשויך לתיאור הקובץ הפתוח n.
אלה שימושיים במיוחד עבור הודעות שגיאה. לדוגמה:
הדפסה "אתה נשבה זה!" > "/dev/stderr"
ואילו אחרת היית צריך להשתמש
הדפסה "אתה נשבה זה!" | "חתול 1>&2"
ניתן להשתמש בשמות הקבצים המיוחדים הבאים עם ה- |& מפעיל תהליכי שיתוף ליצירה
חיבורי רשת TCP/IP:
/inet/tcp/lport/rhost/רפורט
/inet4/tcp/lport/rhost/רפורט
/inet6/tcp/lport/rhost/רפורט
קבצים עבור חיבור TCP/IP ביציאה מקומית lport למארח מרוחק rhost בשלט
נמל רפורט. השתמש בנמל של 0 כדי שהמערכת תבחר יציאה. להשתמש /inet4 כדי לאלץ
חיבור IPv4, ו /inet6 לאלץ חיבור IPv6. מישור /inet משתמש
ברירת המחדל של המערכת (ככל הנראה IPv4).
/inet/udp/lport/rhost/רפורט
/inet4/udp/lport/rhost/רפורט
/inet6/udp/lport/rhost/רפורט
דומה, אבל השתמש ב-UDP/IP במקום TCP/IP.
מספרי פונקציות
ל-AWK יש את הפונקציות האריתמטיות המובנות הבאות:
atan2(y, x) החזר את הארקטנג'ן של y / x ברדיאנים.
cos (ביטוי) החזר את הקוסינוס של ביטוי, שהוא ברדיאנים.
exp (ביטוי) הפונקציה המעריכית.
int (ביטוי) חתוך למספר שלם.
עֵץ(ביטוי) פונקציית הלוגריתם הטבעית.
ראנד () החזר מספר אקראי N, בין 0 ל-1, כך ש-0 ≤ N <1.
חטא(ביטוי) החזר את הסינוס של ביטוי, שהוא ברדיאנים.
sqrt(ביטוי) החזר את השורש הריבועי של ביטוי.
srand([ביטוי]) השתמש ביטוי בתור הזרע החדש של מחולל המספרים האקראיים. אם לא ביטוי is
בתנאי, השתמש בשעה ביום. החזר את הזרע הקודם עבור האקראי
מחולל מספרים.
מחרוזת פונקציות
Gawk בעל פונקציות המחרוזות המובנות הבאות:
סוג של(s [, d [, אֵיך]]) החזר את מספר האלמנטים במערך המקור s. מיין את
תכנים של s באמצעות צוחקהכללים הרגילים של השוואת ערכים, ו
להחליף את המדדים של הערכים הממוינים s עם רצף
מספרים שלמים המתחילים ב-1. אם מערך היעד האופציונלי d is
צוין, שכפול ראשון s אל תוך d, ולאחר מכן מיון d, עוזב את
אינדקסים של מערך המקור s ללא שינוי. המחרוזת האופציונלית אֵיך
שולט בכיוון ובמצב ההשוואה. ערכים חוקיים עבור
אֵיך האם כל אחת מהמחרוזות תקפה עבור PROCINFO["ממוין_ב"]. זה
יכול להיות גם השם של פונקציית השוואה המוגדרת על ידי המשתמש כ
מתואר ב PROCINFO["ממוין_ב"].
asorti(s [, d [, אֵיך]])
החזר את מספר האלמנטים במערך המקור s. ההתנהגות
זהה לזה של סוג של(), אלא שהמערך מדדים יש לו
משמש למיון, לא לערכי המערך. בסיום, המערך הוא
באינדקס מספרי, והערכים הם אלה של המקור
מדדים. הערכים המקוריים הולכים לאיבוד; ובכך לספק שנייה
מערך אם ברצונך לשמר את המקור. מטרת ה
מחרוזת אופציונלית אֵיך זהה לתיאור ב סוג של() מֵעַל.
gensub(r, s, h [, t]) חפש במחרוזת היעד t עבור התאמות של הביטוי הרגולרי
r. אם h הוא מחרוזת שמתחילה ב g or G, ואז החלף הכל
גפרורים של r עם s. אחרת, h הוא מספר המציין איזה
התאמה של r להחליף. אם t לא מסופק, השתמש $0 במקום.
בתוך הטקסט החלופי s, הרצף \n, שם n היא ספרה
מ-1 עד 9, ניתן להשתמש כדי לציין רק את הטקסט שהתאים
מה היא nתת-ביטוי בסוגריים. הרצף \0 מייצג
כל הטקסט המותאם, וכך גם הדמות &. בניגוד תַת()
ו gsub(), המחרוזת ששונתה מוחזרת כתוצאה מה-
פונקציה, ומחרוזת היעד המקורית היא לֹא השתנה.
gsub(r, s [, t]) עבור כל מחרוזת משנה התואמת לביטוי הרגולרי r במחרוזת
t, תחליף את המחרוזת s, ולהחזיר את המספר של
תחליפים. אם t לא מסופק, השתמש $0. & ב
טקסט חלופי מוחלף בטקסט שהיה בפועל
תואם. להשתמש \& לקבל מילולית &. (יש להקליד את זה בתור
"\\&"; ראה לִבהוֹת: אפקטיבי AWK תכנות לדיון מלא יותר
של הכללים עבור &'s ונטויים אחוריים בטקסט החלופי של
תַת(), gsub(), ו gensub().)
אינדקס(s, t) החזר את האינדקס של המחרוזת t במחרוזת s, או 0 אם t לא
מתנה. (זה מרמז כי מדדי אופי מתחילים באחד.) זה
היא שגיאה קטלנית לשימוש בקבוע של ביטוי רגולרי t.
אורך([s]) החזר את אורך החוט s, או האורך של $0 if s לא
מסופק. בתור הרחבה לא סטנדרטית, עם ארגומנט מערך,
אורך() מחזירה את מספר האלמנטים במערך.
התאמה(s, r [, a]) החזר את המיקום פנימה s שבו הביטוי הרגולרי r מתרחשת, או
0 אם r אינו קיים, וקבע את הערכים של RSTART ו RLENGTH.
שים לב שסדר הטיעונים זהה לזה של ~ מפעיל:
str ~ re. אם מערך a מסופק, a נמחק ולאחר מכן אלמנטים
1 עד n מלאים במנות של s שתואמים את
תת-ביטוי תואם בסוגריים ב r. האלמנט ה-0
of a מכיל את החלק של s תואם על ידי כל הקבוע
ביטוי r. מנויים a[n, "הַתחָלָה"], ו a[n, "אורך"]
ספק את האינדקס ההתחלתי במחרוזת ובאורך בהתאמה,
של כל תת מחרוזת תואמת.
patsplit(s, a [, r [, seps]])
פצל את המיתר s לתוך המערך a ומערך המפרידים seps
על הביטוי הרגולרי r, ולהחזיר את מספר השדות.
ערכי אלמנט הם החלקים של s שהתאים r. הערך של
ספטים[i] הוא המפריד שהופיע לפניו a[i+1]. אם r
מושמט, FPAT משמש במקום זאת. המערכים a ו seps יש לו
ניקה תחילה. פיצול מתנהג באופן זהה לפיצול שדות
עם FPAT, מתואר לעיל.
לְפַצֵל(s, a [, r [, seps]])
פצל את המיתר s לתוך המערך a ומערך המפרידים seps
על הביטוי הרגולרי r, ולהחזיר את מספר השדות. אם
r מושמט, FS משמש במקום זאת. המערכים a ו seps יש לו
ניקה תחילה. ספטים[i] הוא מפריד השדות המותאם על ידי r
בֵּין a[i] ו a[i+1]. אם r הוא חלל בודד, ואז מוביל
רווח לבן ב s נכנס לאלמנט המערך הנוסף seps[0] ו
רווח לבן נגרר נכנס לאלמנט המערך הנוסף ספטים[n],
איפה n הוא ערך ההחזר של לְפַצֵל(s, a, r, seps). פְּצִיחָה
מתנהג באופן זהה לפיצול שדות, שתואר לעיל.
sprintf (fmt, expr-list) קופונים להדפסה expr-list על פי fmt, ולהחזיר את המחרוזת שהתקבלה.
strtonum(str) בחן str, ולהחזיר את הערך המספרי שלו. אם str מתחיל עם א
מוביל 0, התייחס אליו כמספר אוקטלי. אם str מתחיל עם א
מוביל 0x or 0X, התייחס אליו כמספר הקסדצימלי. אחרת,
נניח שזה מספר עשרוני.
תַת(r, s [, t]) בדיוק כמו gsub(), אבל החלף רק את המחרוזת התואמת הראשונה.
substr(s, i [, n]) החזר את לכל היותר n-מחרוזת משנה של s החל מ i. אם n
מושמט, השתמש בשאר s.
להנמיך(str) החזר עותק של המחרוזת str, עם כל האותיות הגדולות
in str מתורגמים לעמיתיהם באותיות קטנות המקבילות.
תווים שאינם אלפביתיים נותרים ללא שינוי.
למעלה (str) החזר עותק של המחרוזת str, עם כל התווים הקטנים
in str מתורגמים לעמיתיהם האותיות הגדולות המקבילות.
תווים שאינם אלפביתיים נותרים ללא שינוי.
Gawk מודע לרב-בתים. זה אומר ש אינדקס(), אורך(), substr () ו התאמה() כל עבודה
מבחינת תווים, לא בייטים.
זְמַן פונקציות
מכיוון שאחד השימושים העיקריים של תוכניות AWK הוא עיבוד קובצי יומן שמכילים זמן
מידע בול, צוחק מספק את הפונקציות הבאות להשגת חותמות זמן ו
לעצב אותם.
mktime(מפרט תאריכים)
מגדל מפרט תאריכים לתוך חותמת זמן של אותו טופס כמו שהוחזר על ידי systime(), ו
להחזיר את התוצאה. ה מפרט תאריכים הוא מחרוזת של הצורה YYYY MM DD HH MM SS[
DST]. תוכן המחרוזת הוא שישה או שבעה מספרים המייצגים
בהתאמה השנה המלאה כולל המאה, החודש מ-1 עד 12, היום של
החודש מ-1 עד 31, השעה ביום מ-0 עד 23, הדקה מ-0 עד
59, השני מ-0 ל-60, ודגל אופציונלי לשעון קיץ. הערכים
מספרים אלה אינם חייבים להיות בטווחים שצוינו; למשל שעה
של -1 פירושו שעה אחת לפני חצות. לוח השנה הגרגוריאני באפס מקור הוא
בהנחה, כששנה 0 קודמת לשנה 1 ושנה -1 קודמת לשנה 0. השעה היא
ההנחה היא להיות באזור הזמן המקומי. אם דגל שעון הקיץ חיובי,
ההנחה היא שהשעה היא שעון קיץ; אם אפס, ההנחה היא שהזמן יהיה
להיות זמן סטנדרטי; ואם שלילי (ברירת המחדל), זמן זמן () ניסיונות לקבוע
האם שעון הקיץ בתוקף למשך השעה שצוינה. אם מפרט תאריכים
אינו מכיל מספיק אלמנטים או אם הזמן המתקבל מחוץ לטווח,
זמן זמן () מחזירה -1.
strftime([פוּרמָט [, חותם[, utc-flag]]])
פוּרמָט חותם לפי המפרט ב פוּרמָט. אם utc-flag is
קיים ואינו אפס או לא ריק, התוצאה היא ב-UTC, אחרת התוצאה
הוא בזמן מקומי. ה חותם צריך להיות באותו צורה כמו שהוחזר על ידי
systime(). אם חותם חסר, נעשה שימוש בשעה הנוכחית ביום. אם פוּרמָט
חסר, פורמט ברירת מחדל שווה ערך לפלט של נתונים(1) משמש. ה
פורמט ברירת המחדל זמין ב PROCINFO["strftime"]. עיין במפרט עבור
מה היא זמן עבודה () פונקציה ב-ISO C עבור המרות הפורמט המובטחות
להיות זמין.
systime() החזר את השעה הנוכחית ביום כמספר השניות מאז התקופה
(1970-01-01 00:00:00 UTC במערכות POSIX).
קצת מניפולציות פונקציות
Gawk מספק את פונקציות מניפולציית הסיביות הבאות. הם פועלים על ידי המרת כפול-
ערכי נקודה צפה מדויקת ל uintmax_t מספרים שלמים, ביצוע הפעולה, ולאחר מכן
המרת התוצאה חזרה לנקודה צפה. הפונקציות הן:
ו(v1, v2 [,...]) החזר את ה-AND של הערכים שסופקו ברשימת הארגומנטים.
חייבים להיות לפחות שניים.
compl(val) החזר את ההשלמה הסיבית של val.
lshift(val, לספור) החזר את הערך של val, הוסט שמאלה על ידי לספור ביטים.
אוֹ(v1, v2 [,...]) החזר את OR של הערכים שסופקו ברשימת הארגומנטים.
חייבים להיות לפחות שניים.
rshift(val, לספור) החזר את הערך של val, הוסט ימינה ליד לספור ביטים.
xor(v1, v2 [,...]) החזר את ה-XOR של הערכים שסופקו ברשימת הארגומנטים.
חייבים להיות לפחות שניים.
סוּג פונקציה
הפונקציה הבאה מיועדת לשימוש עם מערכים רב מימדיים.
isarray(x)
החזר נכון אם x הוא מערך, שקר אחרת.
בינאום פונקציות
ניתן להשתמש בפונקציות הבאות מתוך תוכנית AWK שלך לתרגום מחרוזות
בזמן ריצה. לפרטים מלאים, ראה לִבהוֹת: אפקטיבי AWK תכנות.
bindtextdomain(בספרייה [, תחום])
ציין את הספרייה שבה צוחק מחפש את .gmo קבצים, למקרה שלא יעשו זאת או
לא ניתן למקם במיקומים ``סטנדרטיים'' (למשל, במהלך בדיקה). זה חוזר
הספרייה איפה תחום הוא ``כבול.''
ברירת המחדל תחום הוא הערך של TEXTDOMAIN. אם בספרייה היא מחרוזת האפס
(""), לאחר מכן bindtextdomain() מחזירה את הכריכה הנוכחית עבור הנתון תחום.
dcgettext(מחרוזת [, תחום [, קטגוריה]])
החזר את התרגום של מחרוזת בתחום הטקסט תחום עבור קטגוריית המקום
קטגוריה. ערך ברירת המחדל עבור תחום הוא הערך הנוכחי של TEXTDOMAIN. ה
ערך ברירת המחדל עבור קטגוריה is "LC_MESSAGES".
אם אתה מספק ערך עבור קטגוריה, היא חייבת להיות מחרוזת השווה לאחד מהידועים
קטגוריות מקומיות המתוארות ב לִבהוֹת: אפקטיבי AWK תכנות. אתה חייב גם
לספק תחום טקסט. להשתמש TEXTDOMAIN אם ברצונך להשתמש בדומיין הנוכחי.
dcngettext(string1, string2, מספר [, תחום [, קטגוריה]])
החזר את צורת הרבים המשמשת עבור מספר של התרגום של string1 ו string2 in
תחום טקסט תחום עבור קטגוריית המקום קטגוריה. ערך ברירת המחדל עבור תחום is
הערך הנוכחי של TEXTDOMAIN. ערך ברירת המחדל עבור קטגוריה is "LC_MESSAGES".
אם אתה מספק ערך עבור קטגוריה, היא חייבת להיות מחרוזת השווה לאחד מהידועים
קטגוריות מקומיות המתוארות ב לִבהוֹת: אפקטיבי AWK תכנות. אתה חייב גם
לספק תחום טקסט. להשתמש TEXTDOMAIN אם ברצונך להשתמש בדומיין הנוכחי.
משתמש הוגדר פונקציות
פונקציות ב-AWK מוגדרות כדלקמן:
פונקציה שם(פרמטר רשימה) { הצהרות }
פונקציות מבוצעות כאשר הן נקראות מתוך ביטויים בתבניות או
פעולות. פרמטרים בפועל שסופקו בקריאת הפונקציה משמשים לאינסטציה של
פרמטרים פורמליים המוצהרים בפונקציה. מערכים מועברים באמצעות הפניה, אחר
משתנים מועברים לפי ערך.
מכיוון שפונקציות לא היו במקור חלק משפת ה-AWK, ההפרשה למקומית
המשתנים מגושמים למדי: הם מוכרזים כפרמטרים נוספים ברשימת הפרמטרים.
המוסכמה היא להפריד בין משתנים מקומיים מפרמטרים אמיתיים על ידי רווחים נוספים ב-
רשימת פרמטרים. לדוגמה:
פונקציה f(p, q, a, b) # a ו b יש לו מקומי
{
...
}
/א ב ג/ { ... ; f(1, 2) ; ... }
הסוגרי השמאלי בקריאת פונקציה נדרש כדי לעקוב מיד אחרי הפונקציה
שם, ללא רווח לבן מתערב. זה מונע אי בהירות תחבירית עם ה
מפעיל שרשור. הגבלה זו אינה חלה על הפונקציות המובנות המפורטות
מֵעַל.
פונקציות עשויות לקרוא זו לזו ועשויות להיות רקורסיביות. פרמטרי פונקציה המשמשים כמקומיים
משתנים מאותחלים למחרוזת null ולמספר אפס בעת הפעלת הפונקציה.
השתמש לַחֲזוֹר ביטוי כדי להחזיר ערך מפונקציה. ערך ההחזרה אינו מוגדר אם לא
מסופק ערך, או אם הפונקציה חוזרת על ידי "נפילה" מהסוף.
בְּתוֹר צוחק הרחבה, ניתן לקרוא לפונקציות בעקיפין. כדי לעשות זאת, הקצה את השם של
הפונקציה שתיקרא, כמחרוזת, למשתנה. לאחר מכן השתמש במשתנה כאילו הוא
היו שם של פונקציה, עם קידומת an @ סימן, כך:
פונקציה myfunc()
{
הדפסה "myfunc שקוראים לו"
...
}
{ ...
the_func = "myfunc"
@the_func() # שיחה דרך the_func ל myfunc
...
}
החל מגרסה 4.1.2, זה עובד עם פונקציות מוגדרות על ידי משתמש, פונקציות מובנות, ו
פונקציות הרחבה.
If --מוֹך סופק, צוחק מתריע על קריאות לפונקציות לא מוגדרות בזמן ניתוח,
במקום בזמן ריצה. קריאה לפונקציה לא מוגדרת בזמן ריצה היא שגיאה קטלנית.
המילה func ניתן להשתמש במקום פונקציה, למרות שזה הוצא משימוש.
באופן דינמי טוען NEW פונקציות
אתה יכול להוסיף באופן דינמי פונקציות מובנות חדשות לריצה צוחק מתורגמן עם ה
@לִטעוֹן הַצהָרָה. הפרטים המלאים הם מעבר להיקף של דף מדריך זה; לִרְאוֹת לִבהוֹת:
אפקטיבי AWK תכנות.
איתותים
השמיים צוחק Profiler מקבל שני אותות. SIGUSR1 גורם לו להשליך פרופיל ותפקוד
התקשר מחסנית לקובץ הפרופיל, שהוא גם כן awkprof.out, או כל קובץ שנקרא
עם --פּרוֹפִיל אוֹפְּצִיָה. לאחר מכן הוא ממשיך לרוץ. הרשמה גורמים צוחק לזרוק את
מחסנית קריאת פרופיל ופונקציה ואז צא.
בִּנאוּם
קבועי מחרוזת הם רצפים של תווים המוקפים במירכאות כפולות. בלא אנגלית
בסביבות דיבור, ניתן לסמן מחרוזות בתוכנית AWK כנדרש
תרגום לשפה הטבעית המקומית. מחרוזות כאלה מסומנות בתוכנית AWK עם
קו תחתון מוביל ("_"). לדוגמה,
צוחק 'התחל { הדפסה "שלום, עוֹלָם" }'
תמיד מדפיסים שלום, עוֹלָם. אבל,
צוחק 'התחל { הדפסה _"שלום, עוֹלָם" }'
עשוי להדפיס בונז'ור, מונד בצרפת.
ישנם מספר שלבים המעורבים בהפקה ובהפעלה של תוכנית AWK הניתנת לוקליזציה.
1. הוסף א התחל פעולה להקצאת ערך ל- TEXTDOMAIN משתנה כדי להגדיר את תחום הטקסט
לשם המשויך לתוכנית שלך:
התחל { TEXTDOMAIN = "myprog" }
זה מאפשר צוחק כדי למצוא את .gmo קובץ המשויך לתוכנית שלך. בלי זה
שלב, צוחק משתמש הודעות דומיין טקסט, שככל הנראה אינו מכיל תרגומים
עבור התוכנית שלך.
2. סמן את כל המחרוזות שיש לתרגם בקווים תחתונים מובילים.
3. במידת הצורך, השתמש ב- dcgettext() ו / או bindtextdomain() פונקציות בתוכנית שלך,
כראוי.
4. הפעלה צוחק --gen-סיר -f myprog.awk > myprog.pot ליצור א .סיר קובץ עבור שלך
תכנית.
5. ספק תרגומים מתאימים, ובנה והתקן את התרגומים המתאימים .gmo קבצים.
מאפייני הבינאום מתוארים בפירוט מלא ב לִבהוֹת: אפקטיבי AWK
תכנות.
POSIX תְאִימוּת
מטרה ראשית עבור צוחק הוא תאימות לתקן POSIX, כמו גם ל-
הגרסה האחרונה של Brian Kernighan's awk. עד לכאן, צוחק משלבת את הדברים הבאים
תכונות גלויות למשתמש שאינן מתוארות בספר AWK, אך הן חלק מהבריאן
הגרסה של קרניגאן ל awk, ונמצאים בתקן POSIX.
הספר מציין שהקצאת משתנה שורת הפקודה מתרחשת כאשר awk אחרת
פתח את הארגומנט כקובץ, שהוא אחרי ה- התחל הכלל מבוצע. עם זאת, ב
יישומים קודמים, כאשר הקצאה כזו הופיעה לפני שמות קבצים כלשהם, ה-
משימה יקרה לפני מה היא התחל הכלל נוהל. הבקשות התחילו להיות תלויות
תכונה זו." מתי awk שונה כך שיתאים לתיעוד שלה, ה -v אפשרות עבור
הקצאת משתנים לפני הפעלת התוכנית נוספה כדי להתאים ליישומים
תלוי בהתנהגות הישנה. (תכונה זו הוסכם על שני הפעמון
מעבדות ומפתחי GNU.)
בעת עיבוד טיעונים, צוחק משתמש באפשרות המיוחדת "--" כדי לסמן את הסוף של
טיעונים. במצב תאימות, הוא מזהיר לגבי אפשרויות לא מוגדרות, אך מתעלם מהן.
בפעולה רגילה, טיעונים כאלה מועברים לתוכנית AWK כדי שתעבד.
ספר AWK אינו מגדיר את ערך ההחזר של סרנד (). תקן POSIX יש את זה
להחזיר את הזרע שבו השתמש, כדי לאפשר מעקב אחר רצפי מספרים אקראיים.
לכן סרנד () in צוחק גם מחזיר את הזרע הנוכחי שלו.
תכונות חדשות נוספות הן: השימוש במספר -f אפשרויות (מ- MKS awk); ה על אודות array
מה היא \a, ו \v רצפי בריחה (שבוצעו במקור ב צוחק והזינו בחזרה לתוך הפעמון
גרסת מעבדות); ה להנמיך() ו toper() פונקציות מובנות (מהפעמון
גרסת מעבדות); ומפרטי ההמרה של ISO C ב הדפס (בוצע ראשון
גרסת מעבדות בל).
הִיסטוֹרִי מאפיינים
יש תכונה אחת של יישומי AWK היסטוריים צוחק תומך: זה אפשרי
להתקשר אורך() פונקציה מובנית לא רק ללא ארגומנט, אלא אפילו בלי
סוגריים! לכן,
a = אורך # קדוש אלגול 60, באטמן!
זהה לאחת מהן
a = אורך()
a = אורך ($0)
השימוש בתכונה זו הוא תרגול לקוי, ו צוחק מוציא אזהרה לגבי השימוש בו אם --מוֹך is
שצוין בשורת הפקודה.
גנה הרחבות
Gawk יש מספר גדול מדי של הרחבות ל-POSIX awk. הם מתוארים בזה
סָעִיף. ניתן להשבית את כל ההרחבות המתוארות כאן על ידי הפעלתן צוחק עם
--מָסוֹרתִי or --posix אפשרויות.
התכונות הבאות של צוחק אינם זמינים ב-POSIX awk.
· לא מתבצע חיפוש נתיב עבור קבצים הנקראים באמצעות ה -f אוֹפְּצִיָה. לכן ה AWKPATH
משתנה סביבה אינו מיוחד.
· אין מתקן לביצוע הכללת קבצים (צוחק's @לִכלוֹל מַנגָנוֹן).
· אין אפשרות להוספה דינמית של פונקציות חדשות שנכתבו ב-C (צוחק's @לִטעוֹן
מַנגָנוֹן).
· \x רצף בריחה. (מושבת עם --posix.)
· היכולת להמשיך שורות לאחר ? ו :. (מושבת עם --posix.)
· קבועים אוקטליים והקסדצימליים בתוכניות AWK.
· ארגינד, BINMODE, שגיאה, מוך, RT ו TEXTDOMAIN משתנים אינם מיוחדים.
· התעלמות משתנה ותופעות הלוואי שלו אינן זמינות.
· רוחב שדות פיצול שדות משתנה ורוחב קבוע.
· FPAT משתנה ופיצול שדות על בסיס ערכי שדות.
· PROCINFO מערך אינו זמין.
· השימוש של RS כביטוי רגולרי.
· שמות הקבצים המיוחדים הזמינים לניתוב מחדש של I/O אינם מזוהים.
· |& מפעיל ליצירת תהליכים משותפים.
· התחל קובץ ו ENDFILE דפוסים מיוחדים אינם זמינים.
· היכולת לפצל תווים בודדים באמצעות מחרוזת null כערך של FS,
וכטענה שלישית ל לְפַצֵל().
· טיעון רביעי אופציונלי ל לְפַצֵל() כדי לקבל את הטקסטים המפרידים.
· הטיעון השני האופציונלי ל- סגור() פונקציה.
· הטיעון השלישי האופציונלי ל- התאמה() פונקציה.
· היכולת להשתמש במפרטי מיקום עם הדפס ו sprintf ().
· היכולת להעביר מערך ל אורך().
· ו(), סוג של(), asorti(), bindtextdomain(), compl(), dcgettext(), dcngettext(),
gensub(), lshift(), זמן זמן (), אוֹ(), patsplit(), rshift(), זמן עבודה (), strtonum(),
systime() ו xor() פונקציות.
· מחרוזות שניתן לוקליזציה.
ספר AWK אינו מגדיר את ערך ההחזר של ה- סגור() פונקציה. Gawk's סגור()
מחזיר את הערך מ לסגור(3), או סגור(3), בעת סגירת קובץ פלט או צינור,
בהתאמה. הוא מחזיר את מצב היציאה של התהליך בעת סגירת צינור קלט. ה
ערך ההחזרה הוא -1 אם הקובץ, הצינור או התהליך המשותף לא נפתח עם a
הפנייה מחדש.
מתי צוחק הוא מופעל עם --מָסוֹרתִי אפשרות, אם ה fs ויכוח ל -F האפשרות היא
"t", אז FS מוגדר לתו הכרטיסייה. שימו לב שהקלדה צוחק -F\t ... גורם פשוט
הקליפה לצטט את ה-"t", ואינה מעבירה את "\t" ל- -F אוֹפְּצִיָה. מאחר ומדובר ב א
מקרה מיוחד מכוער למדי, זו לא התנהגות ברירת המחדל. גם ההתנהגות הזו לא
להתרחש אם --posix צוין. כדי באמת לקבל תו טאב בתור השדה
מפריד, עדיף להשתמש במירכאות בודדות: צוחק -F'\t' ....
הסביבה וריאציות
השמיים AWKPATH ניתן להשתמש במשתנה סביבה כדי לספק רשימה של ספריות צוחק
חיפוש בעת חיפוש אחר קבצים הנקראים באמצעות ה -f, --קובץ, -i ו --לִכלוֹל אפשרויות. אם
החיפוש הראשוני נכשל, הנתיב נבדק שוב לאחר ההוספה .אוק לשם הקובץ.
השמיים AWKLIBPATH ניתן להשתמש במשתנה סביבה כדי לספק רשימה של ספריות צוחק
חיפוש בעת חיפוש אחר קבצים הנקראים באמצעות ה -l ו --לִטעוֹן אפשרויות.
השמיים GAWK_READ_TIMEOUT ניתן להשתמש במשתנה סביבה כדי לציין פסק זמן ב
אלפיות שניות לקריאת קלט ממסוף, צינור או תקשורת דו כיוונית כולל
שקעים.
לחיבור למארח מרוחק באמצעות שקע, GAWK_SOCK_RETRIES שולט במספר של
מנסה שוב, ו GAWK_MSEC_SLEEP והמרווח בין ניסיונות חוזרים. המרווח בפנים
אלפיות השנייה. במערכות שאינן תומכות אתה ישן(3), הערך מעוגל כלפי מעלה ל-an
מספר אינטגרלי של שניות.
If POSIXLY_CORRECT קיים בסביבה, אם כן צוחק מתנהג בדיוק כאילו --posix היה
צוין בשורת הפקודה. אם --מוֹך צוין, צוחק מוציא אזהרה
הודעה על כך.
יְצִיאָה סטָטוּס
אם יציאה אם כן, נעשה שימוש במשפט עם ערך צוחק יוצא עם הערך המספרי שניתן
אליו.
אחרת, אם לא היו בעיות במהלך הביצוע, צוחק יוצא עם הערך של ה-C
קבוע EXIT_SUCCESS. זה בדרך כלל אפס.
אם מתרחשת שגיאה, צוחק יוצא עם הערך של קבוע C EXIT_FAILURE. זה
בדרך כלל אחד.
If צוחק יוצא בגלל שגיאה קטלנית, מצב היציאה הוא 2. במערכות שאינן POSIX, זה
ניתן למפות את הערך EXIT_FAILURE.
גִרְסָה מידע
דף אדם זה מסמכים צוחק, גרסה 4.1.
מחברים
הגרסה המקורית של UNIX awk תוכנן ויושם על ידי אלפרד אהו, פיטר
ויינברגר, ובריאן קרניגאן ממעבדות בל. בריאן קרניגאן ממשיך
לשמור ולהעצים אותו.
כתבו פול רובין וג'יי פנלאסון, מקרן התוכנה החופשית צוחק, כדי להיות תואם
עם הגרסה המקורית של awk מופץ במהדורה השביעית UNIX. ג'ון וודס
תרם מספר תיקוני באגים. דיוויד טרומן, עם תרומות של ארנולד רובינס,
עשוי צוחק תואם לגרסה החדשה של UNIX awk. ארנולד רובינס הוא הזרם
מתחזק.
לִרְאוֹת לִבהוֹת: אפקטיבי AWK תכנות לרשימה מלאה של התורמים צוחק ו שלה
תיעוד.
ראה README הקובץ צוחק הפצה למידע מעודכן על מתחזקים
ואילו יציאות נתמכות כעת.
חֶרֶק דיווחים
אם אתה מוצא באג ב צוחק, נא לשלוח דואר אלקטרוני אל [מוגן בדוא"ל]. בבקשה
כלול את מערכת ההפעלה שלך ואת הגרסה שלה, הגרסה של צוחק (מ צוחק --גִרְסָה),
באיזה מהדר C השתמשת כדי להדר אותו, ותוכנית בדיקה ונתונים קטנים כמו
אפשרי לשחזר את הבעיה.
לפני שליחת דוח באג, אנא בצע את הדברים הבאים. ראשית, ודא שיש לך
הגרסה האחרונה של צוחק. באגים רבים (בדרך כלל עדינים) מתוקנים בכל מהדורה,
ואם שלך לא מעודכן, ייתכן שהבעיה כבר נפתרה. שנית, בבקשה ראה
אם מגדירים את משתנה הסביבה LC_ALL ל LC_ALL=C גורם לדברים להתנהג כמוך
לְצַפּוֹת. אם כן, זו בעיה מקומית, ויכול להיות שזה באמת באג או לא. לבסוף, בבקשה
קרא בעיון את דף האיש הזה ואת מדריך העזר כדי להיות בטוח שמה שאתה חושב הוא א
באג באמת, במקום סתם מוזרות בשפה.
מה שאתה עושה, תעשה לא פרסם דוח באג ב comp.lang.awk. בזמן ש צוחק מפתחים
קרא מדי פעם את קבוצת הדיונים הזו, פרסום דיווחי באגים יש דרך לא אמינה לדווח
באגים. במקום זאת, אנא השתמש בכתובות הדואר האלקטרוני שצוינו לעיל. בֶּאֱמֶת.
אם אתה משתמש במערכת מבוססת GNU/Linux או BSD, ייתכן שתרצה לשלוח דוח באג אל
הספק של ההפצה שלך. זה בסדר, אבל בבקשה שלח עותק לפקיד
גם כתובת דוא"ל, מכיוון שאין ערובה לכך שדוח הבאג יועבר אל
מה היא צוחק מתחזק.
השתמש ב-gawk באינטרנט באמצעות שירותי onworks.net