קיימות כלי עזר רבים במערכת ההפעלה לינוקס לחיפוש וליצירת דוח מנתוני טקסט או קובץ. המשתמש יכול לבצע סוגים רבים של חיפושים, החלפות ודוחות שנוצרים באמצעות דיווחים באמצעות פקודות awk, grep ו- sed. awk היא לא רק פקודה. זוהי שפת סקריפטים שניתן להשתמש בה מקובץ מסוף וקובץ awk כאחד. הוא תומך במשתנה, משפט מותנה, מערך, לולאות וכו 'כמו שפות סקריפט אחרות. הוא יכול לקרוא כל תוכן קובץ שורה אחר שורה ולהפריד בין השדות או העמודות על בסיס מפריד מסוים. הוא תומך גם בביטוי רגיל לחיפוש מחרוזת מסוימת בתוכן הטקסט או בקובץ ומבצע פעולות אם נמצאה התאמה כלשהי. כיצד תוכל להשתמש בפקודה ובסקריפט awk מוצג במדריך זה באמצעות 20 דוגמאות שימושיות.
תוכן:
- awk עם printf
- awk לפצל על שטח לבן
- awk לשנות את התוחם
- awk עם נתונים המופרדים בלשונית
- awk עם נתוני csv
- awx regex
- awk regex ללא רגישות למקרה
- awk עם משתנה nf (מספר שדות)
- פונקציית gensub () awk
- awk עם פונקציית rand ()
- פונקציה מוגדרת על ידי משתמש awk
- אוו אם
- משתנים awk
- מערכי awk
- לולאה awk
- awk להדפיס את העמודה הראשונה
- awk להדפיס את העמודה האחרונה
- awk עם grep
- awk עם קובץ script bash
- awk עם sed
שימוש ב- awk עם printf
printf () הפונקציה משמשת לעיצוב כל פלט ברוב שפות התכנות. ניתן להשתמש בפונקציה זו עם awk פקודה ליצירת סוגים שונים של פלטים מעוצבים. הפקודה awk משמשת בעיקר לכל קובץ טקסט. צור קובץ טקסט בשם עובד. טקסט עם התוכן שניתן להלן, כאשר השדות מופרדים בכרטיסייה (' t').
עובד. טקסט
1001 ג'ון סנה 40000
1002 Jafar Iqbal 60000
1003 מאהר ניגר 30000
1004 ג'וני ליבר 70000
הפקודה הבאה awk תקרא נתונים מ עובד. טקסט קובץ שורה אחר שורה והדפיס את התיק הראשון לאחר העיצוב. פה, %10s n פירושו שאורך הפלט יהיה 10 תווים. אם ערך הפלט קטן מ -10 תווים אז הרווחים יתווספו בחלק הקדמי של הערך.
$ awk'{printf'%10s n', $ 1}'עוֹבֵד.טקסט
תְפוּקָה:
awk לפצל על שטח לבן
ברירת המחדל של המילה או מפריד השדות לפיצול כל טקסט היא רווח לבן. הפקודה awk יכולה לקחת ערך טקסט כקלט בדרכים שונות. טקסט הקלט מועבר מ זרק הפקודה בדוגמה הבאה. הטקסט, ' אני אוהב לתכנת 'יפוצל על ידי מפריד ברירת המחדל, מֶרחָב , והמילה השלישית תודפס כפלט.
$זרק 'אני אוהב לתכנת' | awk '{הדפס $ 3}'תְפוּקָה:
awk לשנות את התוחם
ניתן להשתמש בפקודה awk כדי לשנות את התוחם עבור כל תוכן קובץ. נניח שיש לך קובץ טקסט בשם phone.txt עם התוכן הבא שבו ':' משמש כמפריד שדות של תוכן הקובץ.
phone.txt
+123: 334: 889: 778+880: 1855: 456: 907
+9: 7777: 38644: 808
הפעל את הפקודה awk הבאה כדי לשנות את התוחם, ':' על ידי '-' לתוכן הקובץ, phone.txt .
$ cat phone.txt$ awk '$ 1 = $ 1' FS = ':' OFS = '-' phone.txt
תְפוּקָה:
awk עם נתונים המופרדים בלשונית
לפקודה awk יש משתנים מובנים רבים המשמשים לקריאת הטקסט בדרכים שונות. שניים מהם FS ו OFS . FS הוא מפריד שדות קלט ו- OFS הוא משתני מפריד שדות פלט. השימושים של משתנים אלה מוצגים בחלק זה. ליצור כרטיסייה קובץ מופרד בשם input.txt עם התוכן הבא לבדיקת השימושים בו FS ו OFS משתנים.
Input.txt
שפת סקריפטים בצד הלקוחשפת סקריפטים בצד השרת
שרת מסד - נתונים
שרת אינטרנט
שימוש במשתנה FS עם כרטיסייה
הפקודה הבאה תפצל כל שורה של input.txt קובץ המבוסס על הכרטיסייה (‘ t’) והדפס את השדה הראשון של כל שורה.
$awk '{הדפס $ 1}' FS='לא'input.txtתְפוּקָה:
שימוש במשתנה OFS עם כרטיסייה
הפקודה הבאה awk תדפיס את 9ה ו 5ה שדות של 'Ls -l' פלט פקודה עם מפריד כרטיסיות לאחר הדפסת כותרת העמודה שֵׁם ו גודל . פה, OFS משתנה משמש לעיצוב הפלט בכרטיסייה.
$ls -ה$ls -ה | awk -v OFS='לא' 'התחל {printf'%s t%s n ',' שם ',' גודל '} {הדפס $ 9, $ 5}'
תְפוּקָה:
awk עם נתוני CSV
ניתן לנתח את התוכן של כל קובץ CSV במספר דרכים באמצעות הפקודה awk. צור קובץ CSV בשם ' customer.csv 'עם התוכן הבא להחלת הפקודה awk.
customer.txt
מזהה, שם, מייל, טלפון1, סופיה, [מוגנת בדוא'ל], (862) 478-7263
2, אמיליה, [מוגן בדוא'ל], (530) 764-8000
3, אמה, [מוגן בדוא'ל], (542) 986-2390
קורא שדה יחיד של קובץ CSV
'-F' האפשרות משמשת עם הפקודה awk כדי להגדיר את המפריד לפצל כל שורה בקובץ. הפקודה הבאה awk תדפיס את שֵׁם שדה של הלקוח. csv קוֹבֶץ.
$חתולcustomer.csv$awk -F ',' '{הדפס $ 2}'customer.csv
תְפוּקָה:
קריאת שדות מרובים על ידי שילוב עם טקסט אחר
הפקודה הבאה תדפיס שלושה שדות של customer.csv על ידי שילוב טקסט כותרת, שם, מייל וטלפון . השורה הראשונה של customer.csv קובץ מכיל את הכותרת של כל שדה. לא משתנה מכיל את מספר השורה של הקובץ כאשר הפקודה awk מנתחת את הקובץ. בדוגמה זו, ה- NR משתנה משמש להשמטת השורה הראשונה של הקובץ. הפלט יציג את 2nd, 3מחקר ופיתוחו -4השדות כל השורות למעט השורה הראשונה.
$awk -F ',' 'NR> 1 {print' שם: '$ 2', דוא'ל: '$ 3', טלפון: '$ 4}'customer.csvתְפוּקָה:
קריאת קובץ CSV באמצעות סקריפט awk
סקריפט awk ניתן לביצוע על ידי הפעלת קובץ awk. כיצד תוכל ליצור קובץ awk ולהריץ את הקובץ מוצג בדוגמה זו. צור קובץ בשם awkcsv.awk עם הקוד הבא. התחל מילת המפתח משמשת בתסריט למידע על הפקודה awk לביצוע התסריט של התחל חלק ראשון לפני ביצוע משימות אחרות. כאן, מפריד שדות ( FS ) משמש להגדרת מפריד מפצל ו -2ndו 1רחובהשדות יודפסו בהתאם לפורמט המשמש בפונקציה printf ().
awkcsv.awkהתחל{FS= ','} { printf '% 5s (% s) n',$2,$1}
לָרוּץ awkcsv.awk קובץ עם התוכן של הלקוח. csv קובץ לפי הפקודה הבאה.
$awk -וawkcsv.awk customer.csvתְפוּקָה:
awx regex
הביטוי הרגיל הוא תבנית המשמשת לחיפוש כל מחרוזת בטקסט. סוגים שונים של משימות חיפוש והחלפה מסובכות ניתנות לביצוע בקלות רבה באמצעות הביטוי הרגיל. כמה שימושים פשוטים בביטוי הרגיל עם הפקודה awk מוצגים בחלק זה.
אופי תואםמַעֲרֶכֶתהפקודה הבאה תתאים למילה טיפש או בול אוֹ מגניב עם מחרוזת הקלט והדפס אם המילה מצאה. פה, בּוּבָּה לא יתאים ולא יודפס.
$printf 'שׁוֹטֶה nמגניב nבּוּבָּה nבול ' | awk '/[FbC] ool/'תְפוּקָה:
מחפש מחרוזת בתחילת השורה
'^' סמל משמש בביטוי הרגיל לחיפוש כל דפוס בתחילת השורה. ' לינוקס ' המילה תחפש בתחילת כל שורת הטקסט בדוגמה הבאה. כאן, שתי שורות מתחילות בטקסט, 'לינוקס 'ושתי השורות האלה יוצגו בפלט.
$זרק -ו 'לינוקס היא בחינם לשימוש nזוהי תוכנת קוד פתוח nLinuxHint הואאתר בלוג פופולרי ' | awk '/^Linux/'
תְפוּקָה:
מחפש מחרוזת בסוף השורה
'$' סמל משמש בביטוי הרגיל לחיפוש כל תבנית בסוף כל שורה של הטקסט. ' תַסרִיט 'מחפשים את המילה בדוגמה הבאה. כאן, שתי שורות מכילות את המילה, תַסרִיט בסוף השורה.
$זרק -ו 'סקריפט PHP nJavaScript nתכנות חזותי ' | awk '/סקריפט $/'תְפוּקָה:
חיפוש על ידי השמטת מערך תווים מסוים
'^' הסמל מציין את תחילת הטקסט כאשר הוא משמש מול תבנית מחרוזת כלשהי (‘ / ^… /’) או לפני כל תו שהוכרז על ידי ^ […] . אם ה '^' הסמל משמש בתוך הסוגר השלישי, [^…] ואז ערכת התווים המוגדרת בתוך הסוגר תישמט בזמן החיפוש. הפקודה הבאה תחפש כל מילה שאינה מתחילה 'F' אבל מסתיים עם ' ool '. מגניב ו בול יודפס על פי נתוני התבנית והטקסט.
$ printf 'שׁוֹטֶה nמגניב nבּוּבָּה nבול ' |awk' / [^ F] ool /'תְפוּקָה:
awk regex ללא רגישות למקרה
כברירת מחדל, ביטוי רגיל עושה חיפוש תלוי רישיות בעת חיפוש דפוס כלשהו במחרוזת. ניתן לבצע חיפוש לא רגיש לאותיות באמצעות פקודה awk עם הביטוי הרגיל. בדוגמה הבאה, להנמיך() הפונקציה משמשת לחיפוש לא רגיש לאותיות. כאן המילה הראשונה של כל שורה בטקסט הקלט תומר לאותיות קטנות באמצעות להנמיך() לתפקד ולהתאים לדפוס הביטוי הרגיל. טופר () ניתן להשתמש בפונקציה גם למטרה זו, במקרה זה, התבנית חייבת להיות מוגדרת על ידי כל האות הגדולה. הטקסט המוגדר בדוגמה הבאה מכיל את מילת החיפוש, 'אינטרנט 'בשתי שורות שיודפסו כפלט.
$זרק -ו 'עיצוב אתרים nבניית אתרים nמִסגֶרֶת' | awk 'tolower ($ 0) ~ /^web /;'תְפוּקָה:
awk עם משתנה NF (מספר שדות)
NF הוא משתנה מובנה של פקודת awk המשמש לספירת מספר השדות הכולל בכל שורה של טקסט הקלט. צור כל קובץ טקסט עם מספר שורות ומילים מרובות. הקלט input.txt קובץ משמש כאן שנוצר בדוגמה הקודמת.
שימוש ב- NF משורת הפקודה
כאן, הפקודה הראשונה משמשת להצגת התוכן של input.txt קובץ והפקודה השנייה משמשים להצגת המספר הכולל של שדות בכל שורה של הקובץ באמצעות NF מִשְׁתַנֶה.
$ cat input.txt$ awk '{print NF}' input.txt
תְפוּקָה:
שימוש ב- NF בקובץ awk
צור קובץ awk בשם count.awk עם התסריט שניתן להלן. כאשר סקריפט זה יבוצע עם נתוני טקסט כל תוכן שורה עם סך השדות יודפס כפלט.
count.awk
{להדפיס $0}{הדפס'[סה'כ שדות:'NF']'}
הפעל את הסקריפט לפי הפקודה הבאה.
$awk -וcount.awk קלט.טקסטתְפוּקָה:
פונקציית gensub () awk
getsub () היא פונקציית החלפה המשמשת לחיפוש מחרוזת המבוססת על תוחם מסוים או דפוס ביטוי רגיל. פונקציה זו מוגדרת ב- 'לִבהוֹת' חבילה שאינה מותקנת כברירת מחדל. התחביר עבור פונקציה זו ניתן להלן. הפרמטר הראשון מכיל את תבנית הביטוי הרגיל או תוחם החיפוש, הפרמטר השני מכיל את הטקסט החלופי, הפרמטר השלישי מציין כיצד יתבצע החיפוש והפרמטר האחרון מכיל את הטקסט שבו יוחל פונקציה זו.
תחביר:
gensub(regexp, החלפה, איך[, יעד])הפעל את הפקודה הבאה להתקנה לִבהוֹת חבילה לשימוש getsub () פונקציה עם פקודה awk.
$ sudo apt-get להתקין gawkצור קובץ טקסט בשם ' salesinfo.txt 'עם התוכן הבא לתרגול דוגמה זו. כאן, השדות מופרדים בכרטיסייה.
salesinfo.txt
700000 שלי800000 שלך
רביעי 750000
לאסוף 200000
שישי 430000
שבת 820000
הפעל את הפקודה הבאה כדי לקרוא את השדות המספריים של salesinfo.txt קובץ והדפס את סך כל סכום המכירה. כאן, הפרמטר השלישי, 'G' מציין את החיפוש העולמי. זה אומר שהתבנית תחפש בתוכן המלא של הקובץ.
$awk '{x = gensub (' t ',' ',' G ', $ 2); printf x '+'} סיום {הדפס 0} 'salesinfo.txt| לִפנֵי הַסְפִירָה -התְפוּקָה:
awk עם פונקציית rand ()
שׁוּרָה() הפונקציה משמשת ליצירת מספר אקראי גדול מ- 0 ופחות מ 1. לכן, היא תמיד תייצר מספר שברי נמוך מ 1. הפקודה הבאה תייצר מספר אקראי שברי ותכפיל את הערך עם 10 כדי לקבל מספר גדול מ- 1. מספר שברי עם שתי ספרות לאחר הנקודה העשרונית יודפס לצורך יישום הפונקציה printf (). אם תפעיל את הפקודה הבאה מספר פעמים תקבל פלט שונה בכל פעם.
$awk 'BEGIN {printf' מספר הוא =%. 2f n ', rand ()*10}'תְפוּקָה:
פונקציה מוגדרת על ידי משתמש awk
כל הפונקציות המשמשות בדוגמאות הקודמות הן פונקציות מובנות. אבל אתה יכול להכריז על פונקציה המוגדרת על ידי המשתמש בתסריט awk שלך לבצע כל משימה מסוימת. נניח שברצונך ליצור פונקציה מותאמת אישית לחישוב שטח מלבן. כדי לבצע משימה זו, צור קובץ בשם ' area.awk 'עם התסריט הבא. בדוגמה זו, פונקציה מוגדרת משתמש בשם אֵזוֹר() מוכרז בתסריט המחשב את השטח על סמך פרמטרי הקלט ומחזיר את ערך השטח. getline הפקודה משמשת כאן כדי לקבל קלט מהמשתמש.
area.awk
# חישוב שטחפוּנקצִיָהאֵזוֹר(גוֹבַה,רוֹחַב){
לַחֲזוֹרגוֹבַה*רוֹחַב
}
# מתחיל ביצוע
התחל{
הדפס'הזן את ערך הגובה:'
getline h< '-'
הדפס'הזן את ערך הרוחב:'
getline w< '-'
הדפס'שטח ='אֵזוֹר(ח,ב)
}
הפעל את התסריט.
$awk -וarea.awkתְפוּקָה:
awk if לדוגמא
awk תומך בהצהרות מותנות כמו שפות תכנות סטנדרטיות אחרות. שלושה סוגים של הצהרות אם מוצגות בסעיף זה באמצעות שלוש דוגמאות. צור קובץ טקסט בשם items.txt עם התוכן הבא.
items.txt
HDD סמסונג 100 $עכבר A4Tech
מדפסת HP 200 $
פשוט אם דוגמא :
הפקודה הבאה שלו תקרא את התוכן של items.txt קובץ ובדוק את 3מחקר ופיתוח ערך שדה בכל שורה. אם הערך ריק אז הוא ידפיס הודעת שגיאה עם מספר השורה.
$awk '{if ($ 3 ==' ') הדפס' שדה המחיר חסר בשורה 'NR}'items.txtתְפוּקָה:
דוגמה אם-אחר:
הפקודה הבאה תדפיס את מחיר הפריט אם 3מחקר ופיתוחהשדה קיים בשורה, אחרת היא תדפיס הודעת שגיאה.
$ awk'{if ($ 3 ==' ') הדפס' שדה המחיר חסר 'אחרת הדפס 'מחיר הפריט הוא' $ 3} 'פריטים.טקסט
תְפוּקָה:
if-else-if דוגמא:
כאשר הפקודה הבאה תתבצע מהמסוף, היא תיקח קלט מהמשתמש. ערך הקלט יושווה לכל תנאי אם עד שהתנאי נכון. אם תנאי כלשהו יתממש אז הוא ידפיס את הציון המתאים. אם ערך הקלט אינו תואם תנאי כלשהו אז ההדפסה תיכשל.
$awk 'התחל {הדפסה' הזן את הסימן: 'סימן getline<'-'
אם (סימן> = 90) הדפס 'A+'
אחרת אם (סימן> = 80) הדפס 'A'
אחרת אם (סימן> = 70) הדפס 'B+'
אחר הדפיס 'נכשל'} '
תְפוּקָה:
משתנים awk
ההכרזה על משתנה awk דומה להצהרה של משתנה הקליפה. יש הבדל בקריאת ערך המשתנה. סמל '$' משמש בשם המשתנה של משתנה הקליפה לקריאת הערך. אך אין צורך להשתמש ב- '$' עם משתנה awk כדי לקרוא את הערך.
שימוש במשתנה פשוט:
הפקודה הבאה תכריז על משתנה בשם 'אֲתַר' וערך מחרוזת מוקצה למשתנה זה. ערך המשתנה מודפס בהצהרה הבאה.
$awk 'BEGIN {site =' LinuxHint.com '; אתר הדפסה} 'תְפוּקָה:
שימוש במשתנה לאחזור נתונים מקובץ
הפקודה הבאה תחפש את המילה 'מדפסת' בקובץ items.txt . אם שורה כלשהי בקובץ מתחילה ב- 'מדפסת 'ואז הוא יאחסן את הערך של 1רחוב , 2nd ו 3מחקר ופיתוח שדות לשלושה משתנים. שֵׁם ו מחיר משתנים יודפסו.
$ awk'/ מדפסת/ {שם = $ 1; מותג = $ 2; מחיר = $ 3; הדפס' שם פריט = 'שם;הדפס 'פריט מחיר =' מחיר} 'פריטים.טקסט
תְפוּקָה:
מערכי awk
ניתן להשתמש במערכים מספריים ומשויכים גם ב- awk. הצהרת משתנה מערך ב- awk זהה לשפות תכנות אחרות. חלק מהשימושים במערכים מוצגים בחלק זה.
מערך אסוציאטיבי:
אינדקס המערך יהיה כל מחרוזת עבור המערך האסוציאטיבי. בדוגמה זו, מערך אסוציאטיבי של שלושה אלמנטים מוכרז ומודפס.
$awk 'התחל {books ['Web Design'] = 'למידת HTML 5';
books ['Web Programming'] = 'PHP ו- MySQL'
books ['PHP Framework'] = 'למידת Laravel 5'
printf '%s n%s n%s n', ספרים ['עיצוב אתרים'], ספרים ['תכנות אתרים'],
ספרים ['PHP Framework']} '
תְפוּקָה:
מערך מספרי:
מערך מספרי של שלושה אלמנטים מוכרזים ומודפסים על ידי הפרדת כרטיסייה.
$ awk'התחל {מספר [0] = 80;
מספר [1] = 55;
מספר [2] = 76;
# רכיבי מערך הדפסה
ערכי מערך printf ': %d t%ד t%ד n', מספר [0], מספר [1], מספר [2]; } '
תְפוּקָה:
לולאה awk
שלושה סוגים של לולאות נתמכים על ידי awk. השימושים של לולאות אלה מוצגים כאן באמצעות שלוש דוגמאות.
בעוד לולאה:
בעוד לולאה המשמשת בפקודה הבאה תחזור על עצמה 5 פעמים ותצא מהלולאה לצורך הצהרת הפסקה.
$ awk 'התחל {n = 1; בעוד (n 5) נשברים; הדפס n; n ++}} 'תְפוּקָה:
ללולאה:
עבור לולאה המשמשת בפקודה awk הבאה תחשב את הסכום מ -1 עד 10 ותדפיס את הערך.
$awk 'BEGIN {sum = 0; עבור (n = 1; n<= 10; n++) sum=sum+n; print sum }'תְפוּקָה:
לולאת עשה בזמן:
לולאת עשה בזמן של הפקודה הבאה תדפיס את כל המספרים הזוגיים מ -10 עד 5.
$awk 'BEGIN {counter = 10; לעשות {if (מונה%2 == 0) מונה הדפסה; נגד--}while (counter> 5)} '
תְפוּקָה:
awk להדפיס את העמודה הראשונה
ניתן להדפיס את העמודה הראשונה של כל קובץ באמצעות משתנה $ 1 ב- awk. אבל אם הערך של העמודה הראשונה מכיל מספר מילים אז רק המילה הראשונה של העמודה הראשונה מודפסת. על ידי שימוש במפריד מסוים, ניתן להדפיס את העמודה הראשונה כראוי. צור קובץ טקסט בשם students.txt עם התוכן הבא. כאן הטור הראשון מכיל את הטקסט של שתי מילים.
Students.txt
קניז פאטמה 30הקבוצהאביר חוסיין 35הקבוצה
ג'ון אברהם 40הקבוצה
הפעל את הפקודה awk ללא כל תוחם. החלק הראשון של העמודה הראשונה יודפס.
$awk '{הדפס $ 1}'students.txtהפעל את הפקודה awk עם המפריד הבא. החלק המלא של העמודה הראשונה יודפס.
$awk -F '\ s \ s' '{הדפס $ 1}'students.txtתְפוּקָה:
awk להדפיס את העמודה האחרונה
$ (NF) ניתן להשתמש במשתנה להדפסת העמודה האחרונה של כל קובץ. פקודות awk הבאות יודפסו את החלק האחרון והחלק המלא של העמודה האחרונה של הסטודנטים.טקסט קוֹבֶץ.
$awk '{print $ (NF)}'students.txt$awk -F '\ s \ s' '{print $ (NF)}'students.txt
תְפוּקָה:
awk עם grep
grep היא פקודה שימושית נוספת של Linux לחיפוש תוכן בקובץ המבוסס על כל ביטוי רגיל. כיצד ניתן להשתמש בפקודות awk ו- grep יחד מוצג בדוגמה הבאה. אחיזה הפקודה משמשת לחיפוש מידע של מזהה העובד, ' 1002 ' מ העובד.טקסט קוֹבֶץ. הפלט של פקודת grep יישלח אל awk כנתוני קלט. בונוס של 5% ייספר ויודפס על בסיס השכר של מזהה העובד, ' 1002 ' בפקודה awk.
$חתולעובד. טקסט$אחיזה '1002'עובד. טקסט| awk -F 'לא' '{print $ 2' יקבל $ '($ 3*5)/100' bonus '}'
תְפוּקָה:
awk עם קובץ BASH
בדומה לפקודת לינוקס אחרת, ניתן להשתמש בפקודת awk גם בסקריפט BASH. צור קובץ טקסט בשם customers.txt עם התוכן הבא. כל שורה בקובץ זה מכילה מידע על ארבעה שדות. אלה הם מספר הלקוח, שם, כתובת ומספר נייד שאליהם מופרדים '/ '.
customers.txt
AL4934 / Charles M Brunner / 4838 Beeghley Street, האנטסוויל, אלבמה / 256-671-7942CA5455 / Virginia S Mota / 930 Bassel Street, VALLECITO, קליפורניה / 415-679-5908
IL4855 / Ann A Neale / 1932 Patterson Fork Road, שיקגו, אילינוי / 773-550-5107
צור קובץ bash בשם item_search.bash עם התסריט הבא. על פי סקריפט זה, ערך המדינה יילקח מהמשתמש ויחפש אותו הלקוחות.טקסט קובץ על ידי אחיזה פקודה והועבר לפקודת awk כקלט. פקודת Awk תקרא 2nd ו 4ה שדות של כל שורה. אם ערך הקלט תואם לערך מצב כלשהו של customers.txt הקובץ אז הוא ידפיס את הלקוח שֵׁם ו מספר טלפון נייד אחרת היא תדפיס את ההודעה לא נמצא לקוח .
item_search.bash
#!/bin/bashזרק 'הזן את שם המדינה:'
לקרואמדינה
לקוחות='אחיזה 'מדינה $'customers.txt| awk -F '/' '{print' שם לקוח: '$ 2',
מספר לנייד: '$ 4}''
אם [ 'לקוחות $' !='' ];לאחר מכן
זרק לקוחות $
אַחֵר
זרק 'לא נמצא לקוח'
לִהיוֹת
הפעל את הפקודות הבאות כדי להציג את הפלטים.
$חתולcustomers.txt$לַחֲבוֹטitem_search.bash
תְפוּקָה:
awk עם sed
עוד כלי חיפוש שימושי של לינוקס הוא sed . ניתן להשתמש בפקודה זו הן לחיפוש והן להחלפת טקסט של כל קובץ. הדוגמה הבאה מציגה את השימוש בפקודה awk עם sed פקודה. כאן, פקודת sed תחפש בכל שמות העובדים שמתחילה ב- ' י 'ועובר לפקודת awk כקלט. awk תדפיס עובד שֵׁם ו תְעוּדַת זֶהוּת לאחר עיצוב.
$חתולעובד. טקסט$sed -ן '/J/p'עובד. טקסט| awk -F 'לא' '{printf'%s (%s) n ', $ 2, $ 1}'
תְפוּקָה:
סיכום:
אתה יכול להשתמש בפקודה awk ליצירת סוגים שונים של דוחות המבוססים על נתונים טבלאיים או מופרדים לאחר סינון הנתונים כראוי. מקווה שתוכל ללמוד כיצד פועלת הפקודה awk לאחר תרגול הדוגמאות המוצגות במדריך זה.