ווי צו שרייב אַווק קאַמאַנדז און סקריפּץ

קאַמאַנדז, סינטאַקס, און ביישפילן

די אַווק באַפֿעלן איז אַ שטאַרק אופֿן פֿאַר פּראַסעסינג אָדער אַנאַליזינג טעקסט טעקעס, ספּעציעל דאַטן טעקעס וואָס זענען אָרגאַניזירט דורך שורות (ראָוז) און שפאלטן.

פּשוט אַווק קאַמאַנדז קענען זיין לויפן פון די באַפֿעל שורה . מער קאָמפּליצירט טאַסקס זאָל זיין געשריבן ווי אַווק מגילה (אַזוי גערופן אַווק סקריפּס) צו אַ טעקע.

דער יקערדיק פֿאָרמאַט פון אַן awk באַפֿעל קוקט ווי דאָס:

awk 'מוסטער {action}' input-file> output-file

דעם מיטל: נעמען יעדער שורה פון די אַרייַנשרייַב טעקע; אויב די שורה כּולל די מוסטער צולייגן דעם קאַמף צו די שורה און שרייַבן די ריזאַלטינג שורה צו די רעזולטאַט טעקע. אויב די מוסטער איז איבערגעהיפּערט, די אַקציע איז געווענדט צו אַלע שורה. פֿאַר בייַשפּיל:

awk '{print $ 5}' table1.txt> output1.txt

דער דערקלערונג נעמט די עלעמענט פון די 5 זייַל פון יעדער שורה און שרייבט עס ווי אַ שורה אין דער רעזולטאַט טעקע "אָוטפּוט.טקסט". די בייַטעוודיק '$ 4' איז די צווייט זייַל. איר קענט אויך צוטריט צו דער ערשטער, רגע, און דריט זאמלונג, מיט $ 1, $ 2, $ 3, אאז"וו. דורך פעליקייַט שפאלטן זייַנען אנגענומען צו זיין אפגעשיידט דורך ספּייסאַז אָדער טאַבס (אַזוי גערופן ווייַס פּלאַץ). אַזוי, אויב די אַרייַנשרייַב טעקע "טאַבלע1.טקסט" כּולל די שורות:

1, דזשאַסטין טימבערלאַקע, טיטל 545, פּרייַז $ 7.30 2, טיילער סוויפט, טיטל 723, פּרייַז $ 7.90 3, Mick Jagger, טיטל 610, פּרייַז $ 7.90 4, דאַמע גאַגאַ, טיטל 118, פּרייַז $ 7.30 5, דזשאַני קאַש, טיטל 482, פּרייַז $ 6.50 6, עלוויס פּרעסלי, טיטל 335, פּרייַז $ 7.30 7, יוחנן לענאַן, טיטל 271, פּרייַז $ 7.90 8, מיכאל זשעקסאן, טיטל 373, פּרייַז $ 5.50

דעמאָלט דער באַפֿעל וואָלט שרייַבן די פאלגענדע שורות צו די רעזולטאַט טעקע "אָוטפּוטע.טקסט":

545, 723, 610, 118, 482, 335, 271, 373,

אויב די קאַונער סעפּאַראַטאָר איז עפּעס אַנדערש ווי ספּייסיז אָדער טאַבס, אַזאַ ווי אַ קאָמע, איר קענען ספּעציפיצירן אַז אין די awk דערקלערונג ווי גייט:

awk -f, '{print $ 3}' table1.txt> output1.txt

דעם וועט אויסקלייַבן דעם עלעמענט פון זייַל 3 פון יעדער שורה אויב די שפאלטן זענען גערעכנט צו זיין אפגעשיידט דורך אַ קאָמע. דעריבער דער רעזולטאַט, אין דעם פאַל, וואָלט זיין:

טיטל 545 טיטל 723 טיטל 610 טיטל 118 טיטל 482 טיטל 335 טיטל 271 טיטל 373

דער רשימה פון סטייטמאַנץ ין די געגרייַזלט ברעקלעך ('{', '}') איז גערופן אַ בלאָק. אויב איר שטעלן אַ קאַנדישאַנאַל אויסדרוק אין פראָנט פון אַ בלאָק, די דערקלערונג ין דער בלאָק וועט זיין עקסאַקיוטאַד בלויז אויב די צושטאַנד איז אמת.

$ 7 == "$ 7.30" {דרוקן $ 3} 'טאַבלע1.טקסט

אין דעם פאַל, דער צושטאַנד איז $ 7 == "$ 7.30", וואָס מיטל אַז די עלעמענט אין זייַל 7 איז גלייַך צו $ 7.30. די באַקקלאַש אין פראָנט פון דער דאָלאַר צייכן איז געניצט צו פאַרמייַדן די סיסטעם פון ינטערפּריטינג $ 7 ווי אַ בייַטעוודיק און אַנשטאָט נעמען די דאָלאַר צייכן ממש.

אַזוי דעם awk דערקלערונג פּרינץ אויס די עלעמענט בייַ די 3 זייַל פון יעדער שורה וואָס האט אַ "$ 7.30" אין זייַל 7.

איר קענען נוצן רעגולער אויסדרוקן ווי דער צושטאַנד. פֿאַר בייַשפּיל:

awk '/ 30 / {print $ 3}' טאַבלע1.טקסט

די שטריקל צווישן די צוויי סלאַשיז ('/') איז די רעגולער אויסדרוק. אין דעם פאַל, עס איז נאָר די שטריקל "30." דעם מיטל אויב אַ שורה כּולל די שטריקל "30", די סיסטעם דרוקן די עלעמענט אין די 3 זייַל פון די שורה. דער רעזולטאַט אין די אויבן בייַשפּיל וואָלט זיין:

טימבערלאַקע, גאַגאַ, פּרעסלי,

אויב די טיש עלעמענטן זענען נומערן אַווק קענען לויפן חשבונות אויף זיי ווי אין דעם בייַשפּיל:

awk '{print ($ 2 * $ 3) + $ 7}'

חוץ די וועריאַבאַלז וואָס אַקסעס די ייטאַמז פון די קראַנט רודערן ($ 1, $ 2, אאז"ו ו) די בייַטעוודיק $ 0 וואָס רעפערס צו די פול שורה (שורה), און די בייַטעוודיק נף וואָס האלט צו די נומער פון פעלדער.

איר קענען אויך באַשטימען נייַ וועריאַבאַלז ווי אין דעם בייַשפּיל:

awk '{סומד = 0; פֿאַר (קאָל = 1; קאָל <= נף; קאָל ++) סומע = = $ קאָל; דרוקן סומע; } '

דעם קאַמפּיוץ און דרוקן די סאַכאַקל פון אַלע די יסודות פון יעדער רודערן.

Awk סטייטמאַנץ זענען אָפט קאַמביינד מיט סעד קאַמאַנדז .