រៀនពាក្យបញ្ជាលីនុច - gawk

ឈ្មោះ

gawk - ការស្កេនលំនាំនិងដំណើរការភាសា

សង្ខេប

gawk [ជម្រើសរចនាប័ទ្ម POSIX ឬ GNU] - ឯកសារកម្មវិធី - ឯកសារ [ - ] ...
gawk [POSIX ឬជម្រើសរចនាប័ទ្ម GNU] [ - ] ឯកសារ អត្ថបទ កម្មវិធី ...

pgawk [ជម្រើសរចនាប័ទ្ម POSIX ឬ GNU] -f កម្មវិធី - ឯកសារ [ - ] ...
pgawk [ជម្រើសរចនាប័ទ្ម POSIX ឬ GNU] [ - ] ឯកសារ អត្ថបទ កម្មវិធី ...

ការពិពណ៌នា

Gawk គឺជាការអនុវត្តកម្មវិធីភាសា AWK របស់គម្រោង GNU ។ វាអនុលោមទៅតាមនិយមន័យនៃភាសានៅក្នុង POSIX 1003.2 ភាសារឺភាសាប្រើប្រាស់ធម្មតា។ កំណែនេះត្រូវបានផ្អែកលើការពិពណ៌នានៅក្នុង ភាសាសរសេរកម្មវិធី AWK ដោយ Aho, Kernighan និង Weinberger ដោយមានលក្ខណៈបន្ថែមដែលត្រូវបានរកឃើញនៅក្នុងកំណែប្រព័ន្ធ V Release 4 នៃ UNIX awkGawk ក៏បានផ្តល់នូវផ្នែកបន្ថែមទៀតនាពេលថ្មីៗនេះរបស់ Bell Laboratories awk និងផ្នែកបន្ថែមមួយចំនួននៃ GNU ។

Pgawk គឺជាកំណែទម្រង់នៃ gawk ។ វាដូចគ្នាបេះបិទទៅគ្រប់វិធីទាំងអស់ដើម្បីឱ្យវាដំណើរការបានយឺត ៗ ហើយវានឹងបង្កើតទម្រង់ប្រតិបត្តិការដោយស្វ័យប្រវត្តិនៅក្នុងឯកសារ awkprof.out នៅពេលដែលបានបញ្ចប់។ សូមមើលជម្រើស - profile ខាងក្រោម។

បន្ទាត់ពាក្យបញ្ជាមានជម្រើសដើម្បី gawk ខ្លួនវាអត្ថបទកម្មវិធី AWK (ប្រសិនបើមិនបានផ្តល់តាមរយៈជម្រើស -F- ឯកសារ ) និងតម្លៃត្រូវបានធ្វើឱ្យមាននៅក្នុង ARGC និង ARGV អថេរ AWK ដែលបានកំណត់ជាមុន។

ទ្រង់ទ្រាយជម្រើស

ជម្រើស Gawk អាចជាជម្រើស POSIX ចាស់ៗមួយឬជម្រើសវែងរបស់រចនាប័ទ្ម GNU ។ ជម្រើស POSIX ចាប់ផ្តើមដោយ `` - `'តែមួយខណៈជម្រើសដ៏វែងចាប់ផ្ដើមដោយ` `-' '។ ជម្រើសឡុងត្រូវបានផ្តល់សម្រាប់ទាំងលក្ខណៈពិសេសរបស់ GNU និងលក្ខណៈពិសេស POSIX ។

តាមស្តង់ដារ POSIX ជម្រើស gawk ត្រូវបានផ្គត់ផ្គង់តាមរយៈអាគុយម៉ង់ទៅជម្រើស -W ។ ជម្រើសច្រើន - វ៉េ អាចត្រូវបានផ្តល់ជូន។ ជម្រើសនីមួយៗមានជម្រើសដែលត្រូវគ្នាយូរដូចបានរៀបរាប់លម្អិតខាងក្រោម។ អាគុយម៉ង់ចំពោះជម្រើសវែងត្រូវបានភ្ជាប់ជាមួយជម្រើសដោយសញ្ញា = សញ្ញាគ្មានដកឃ្លាឬអាចត្រូវបានផ្តល់អាគុយម៉ង់បន្ទាត់ពាក្យបញ្ជាបន្ទាប់។ ជម្រើសឡុងអាចមានអក្សរកាត់ដរាបណាអក្សរកាត់នៅតែមានតែមួយ។

ជម្រើស

Gawk ទទួលយកជម្រើសដូចខាងក្រោមដែលបានចុះបញ្ជីតាមអក្ខរក្រម។

-F fs

- វាលបំបែក fs ប្រើ fs សម្រាប់សញ្ញាបំបែកវាលបញ្ចូល (តម្លៃនៃអថេរដែលបានកំណត់ដោយ FS ) ។

-v var = val

- assign var = val វាយតម្លៃ val សម្រាប់ variable var មុនពេលចាប់ផ្តើមដំណើរការកម្មវិធី។ តម្លៃអថេរបែបនេះអាចប្រើបានសម្រាប់ប្លុក BEGIN នៃកម្មវិធី AWK ។

- ឯកសារកម្មវិធី

- ឯកសារកម្មវិធីឯកសារ អានប្រភពកម្មវិធី AWK ពីឯកសារ កម្មវិធីឯកសារ ជំនួសឱ្យអាគុយម៉ង់បន្ទាត់ពាក្យបញ្ជា។ ជម្រើសពហុ -f (ឬ - file ) អាចត្រូវបានប្រើ។

-mf NNN

-mr NNN កំណត់ការកំណត់អង្គចងចាំផ្សេងៗទៅតម្លៃ NNN ។ ទង់ f កំណត់ចំនួនវាលអតិបរមានិងទង់ជាតិ r កំណត់ទំហំកំណត់ត្រាអតិបរមា។ ទង់ជាតិទាំងពីរនេះនិងជំរើស -m គឺមកពីកំណែនៃការស្រាវជ្រាវឡាទីនរបស់អង្គការ UNIX awk ។ ពួកគេត្រូវបានមិនអើពើដោយ gawk , ចាប់តាំងពី gawk មិនមានដែនកំណត់មុនកំណត់។

-W compat

-W ប្រពៃណី

--compat

--traditional រត់ក្នុងរបៀបដែល ឆបគ្នា ។ នៅក្នុងរបៀបដែលឆបគ្នា, gawk ឥរិយាបថដូចគ្នាទៅនឹង awk យូនីក ; គ្មានផ្នែកបន្ថែមណាមួយរបស់ GNU ត្រូវបានទទួលស្គាល់ទេ។ ការប្រើប្រាស់នៃ --traditional ត្រូវបានគេពេញចិត្តលើទម្រង់ផ្សេងទៀតនៃជម្រើសនេះ។ សូមមើល GNU EXTENSIONS ខាងក្រោមសម្រាប់ព័ត៌មានបន្ថែម។

-W copyleft

-W ច្បាប់រក្សាសិទ្ធិ

- ចម្លង

- រក្សាសិទ្ធិ បោះពុម្ភផ្សាយព័ត៌មានខ្លីៗនៃពត៌មានច្បាប់រក្សាសិទ្ធិ GNU នៅលើលទ្ធផលស្តង់ដារហើយចេញដោយជោគជ័យ។

-W អថេរឥតបានការ [ = ឯកសារ ]

- អថេរឥតបានការ [ = ឯកសារ ] បោះពុម្ពបញ្ជីនៃអថេរសកលប្រភេទប្រភេទនិងតម្លៃចុងក្រោយដើម្បី ដាក់ឯកសារ ។ ប្រសិនបើគ្មាន ឯកសារ ត្រូវបានផ្តល់ទេនោះ gawk ប្រើឯកសារដែលមានឈ្មោះថា awkvars.out នៅក្នុងថតបច្ចុប្បន្ន។

មានបញ្ជីបំរែបំរួលសកលទាំងអស់គឺជាមធ្យោបាយដ៏ល្អក្នុងការស្វែងរកកំហុសក្នុងការសរសេរអក្សរនៅក្នុងកម្មវិធីរបស់អ្នក។ អ្នកក៏នឹងប្រើជម្រើសនេះផងដែរប្រសិនបើអ្នកមានកម្មវិធីដ៏ធំមួយដែលមានមុខងារច្រើនហើយអ្នកចង់ប្រាកដថាមុខងាររបស់អ្នកមិនប្រើអថេរសកលដែលអ្នកចង់បានជាមូលដ្ឋាន។ (នេះគឺជាកំហុសឆ្គងងាយស្រួលបំផុតដើម្បីបង្កើតជាមួយឈ្មោះអថេរសាមញ្ញដូចជា I , J ជាដើម។ )

-W ជំនួយ

ការប្រើប្រាស់ W

- ជំនួយ

--usage បោះពុម្ពសង្ខេបខ្លីនៃជម្រើសដែលមាននៅលើទិន្នផលស្តង់ដារ។ (តាម ស្តង់ដារកូដឌីជីថលរបស់ GNU ជម្រើសទាំងនេះបណ្តាលឱ្យចេញជាបន្ទាន់។ )

-W lint [ = fatal ]

- lint [ = fatal ] ផ្តល់នូវការព្រមានអំពីការសាងសង់ដែលគួរអោយសង្ស័យឬមិនចល័តចំពោះការអនុវត្តដទៃទៀតនៃអាលែក។ ជាមួយនឹងអាគុយម៉ង់ស្រេចចិត្តនៃការ ស្លាប់ , ការព្រមាន lint ក្លាយជាកំហុសធ្ងន់ធ្ងរ។ នេះប្រហែលជាខ្លាំងប៉ុន្តែការប្រើប្រាស់របស់វាពិតជានឹងលើកទឹកចិត្តឱ្យមានការអភិវឌ្ឍកម្មវិធី AWK ស្អាត។

-W lint ចាស់

- lint-old ផ្តល់ការព្រមានអំពីការសាងសង់ដែលមិនអាចចល័តទៅកំណែដើមរបស់ អ៊ុន នីស awk

-W gen-po

- gen-po វិភាគនិងវិភាគកម្មវិធី AWK និងបង្កើត ឯកសារ ទ្រង់ទ្រាយ GNU .po នៅលើទិន្នផលស្តង់ដារដែលមានធាតុសម្រាប់ខ្សែអក្សរអាចធ្វើមូលដ្ឋានីយកម្មទាំងអស់នៅក្នុងកម្មវិធី។ កម្មវិធីខ្លួនវាមិនត្រូវបានប្រតិបត្តិទេ។ សូមមើលការចែកចាយរបស់ GNU gettext សម្រាប់ព័ត៌មានបន្ថែមលើ ឯកសារ .po

-W មិនមែនជាទិន្នន័យគោលដប់

- គ្មានទសភាគទិន្នន័យ ទទួលស្គាល់តម្លៃគោលប្រាំបីនិងប្រព័ន្ធគោលដប់ប្រាំមួយនៅក្នុងទិន្នន័យបញ្ចូល។ ប្រើជម្រើសនេះដោយប្រុងប្រយ័ត្នខ្ពស់!

- Posix

--posix នេះប្រែរបៀបដែល ឆបគ្នា ជាមួយនឹងការរឹតបន្តឹងបន្ថែមទៀតដូចខាងក្រោម:

*

\ x លំដាប់រត់គេចខ្លួនមិនត្រូវបានទទួលស្គាល់។

*

មានតែចន្លោះនិងផ្ទាំងជាកន្លែងបំបែកបន្ទាត់នៅពេល FS ត្រូវបានកំណត់ទៅទំហំតែមួយបន្ទាត់ថ្មីមិនមាន។

*

អ្នកមិនអាចបន្តបន្ទាត់បន្ទាប់ពី ? និង :

*

មុខងារ សព្ទ មានន័យថា មុខងារមុខងារ ពាក្យគន្លឹះមិនត្រូវបានទទួលស្គាល់ទេ។

*

សញ្ញាប្រមាណវិធី ** និង ** = មិនអាចត្រូវបានប្រើជំនួស ^ និង ^ =

*

អនុគមន៍ fflush () គឺមិនមានទេ។

-W ប្រវត្តិរូប [ = prof_file ]

- profile [ = prof_file ] ផ្ញើទិន្នន័យទម្រង់ទៅ prof_file ។ លំនាំដើមគឺ awkprof.out ។ ពេលរត់ជាមួយ gawk , ទម្រង់គឺគ្រាន់តែជាកំណែ«បោះពុម្ពស្អាត "របស់កម្មវិធីប៉ុណ្ណោះ។ ពេលរត់ជាមួយ pgawk ទម្រង់មានចំនួនការប្រតិបត្តិនៃសេចក្តីថ្លែងការណ៍និមួយៗក្នុងកម្មវិធីនៅរឹមខាងឆ្វេងនិងចំនួនការហៅមុខងារសម្រាប់មុខងារដែលកំណត់ដោយអ្នកប្រើនីមួយៗ។

- W ចន្លោះពេលឡើងវិញ

--re-interval អនុញ្ញាតឱ្យប្រើ កន្សោមចន្លោះ ក្នុងការផ្គូផ្គងកន្សោមធម្មតា (សូមមើល កន្សោមធម្មតា ខាងក្រោម) ។ កន្សោមចន្លោះពេលមិនមានជាទូទៅក្នុងភាសា AWK ។ ស្តង់ដារ POSIX បានបន្ថែមពួកវាដើម្បីធ្វើឱ្យ awk និង egrep ស្របគ្នា។ ទោះយ៉ាងណាក៏ដោយការប្រើរបស់ពួកគេទំនងជាបំបែកកម្មវិធីចាស់ AWK ដូច្នេះ gawk ផ្តល់ឱ្យពួកគេតែប៉ុណ្ណោះប្រសិនបើពួកវាត្រូវបានស្នើសុំជាមួយជម្រើសនេះឬនៅពេល - - និយមន័យ ត្រូវបានបញ្ជាក់។

-W អត្ថបទ ប្រភព កម្មវិធី -

- អត្ថបទកម្មវិធីអត្ថបទ ប្រើ អត្ថបទ កម្មវិធី ជាកូដប្រភពកម្មវិធី AWK ។ ជម្រើសនេះអនុញ្ញាតឱ្យងាយស្រួលបណ្ណាល័យនៃមុខងារបណ្ណាល័យ (ប្រើតាមជម្រើស --f និង - file ) ជាមួយកូដប្រភពដែលបានបញ្ចូលនៅលើបន្ទាត់ពាក្យបញ្ជា។ វាត្រូវបានបង្កើតឡើងជាចម្បងសម្រាប់កម្មវិធី AWK មធ្យមនិងធំដែលត្រូវបានប្រើក្នុងស្គ្រីបសែល។

-W

--version បោះពុម្ពកំណែព័ត៌មានសម្រាប់ច្បាប់ចម្លងពិសេសនេះនៅលើទិន្នផលស្តង់ដារ។ នេះមានប្រយោជន៍ជាចម្បងសម្រាប់ការដឹងថាតើច្បាប់ចម្លងបច្ចុប្បន្ននៃប្រព័ន្ធរបស់អ្នកគឺទាន់សម័យដោយគោរពតាមអ្វីដែលមូលនិធិកម្មវិធីឥតគិតថ្លៃត្រូវបានចែកចាយ។ វាមានប្រយោជន៍នៅពេលរាយការណ៍កំហុស។ (តាម ស្តង់ដារកូដឌីជីថលរបស់ GNU ជម្រើសទាំងនេះបណ្តាលឱ្យចេញជាបន្ទាន់។ )

- សញ្ញាបង្ហាញចុងបញ្ចប់ជម្រើស។ វាមានប្រយោជន៍ក្នុងការអនុញ្ញាតអាគុយម៉ង់បន្ថែមទៅកម្មវិធី AWK ដើម្បីចាប់ផ្ដើមដោយ `` - '' ។ នេះជាចម្បងសម្រាប់ភាពស៊ីសង្វាក់ជាមួយអនុសញ្ញាវិភាគអាគុយម៉ង់ដែលប្រើដោយកម្មវិធី POSIX ផ្សេងទៀត។

នៅក្នុងរបៀបដែលឆបគ្នាជម្រើសណាមួយផ្សេងទៀតត្រូវបានដាក់ទង់ថាមិនត្រឹមត្រូវប៉ុន្តែត្រូវបានមិនអើពើ។ នៅក្នុងប្រតិបត្តិការធម្មតាដរាបណាអត្ថបទកម្មវិធីត្រូវបានផ្គត់ផ្គង់ជម្រើសដែលមិនស្គាល់ត្រូវបានបញ្ជូនទៅកម្មវិធី AWK នៅក្នុងអារេ ARGV សម្រាប់ដំណើរការ។ វាមានប្រយោជន៍ជាពិសេសសម្រាប់ការរត់កម្មវិធី AWK តាមរយៈយន្ដការកម្មវិធីបកប្រែ ``! '' ។

ដំណើរការកម្មវិធី AWK

កម្មវិធី AWK មានលំដាប់នៃសេចក្តីថ្លែងការណ៍សកម្មភាពគំរូនិងនិយមន័យមុខងារស្រេចចិត្ត។

លំនាំ { សកម្មភាពសកម្មភាព }

ឈ្មោះ អនុគមន៍ ( បញ្ជីប៉ារ៉ាម៉ែត្រ ) { សេចក្តីថ្លែងការណ៍ }

Gawk ដំបូងអានប្រភពកម្មវិធីពី ឯកសារកម្មវិធី ប្រសិនបើបានបញ្ជាក់ពីអាគុយម៉ង់ទៅ - ប្រភព ឬពីអាគុយម៉ង់មិនមែនជម្រើសដំបូងនៅលើបន្ទាត់ពាក្យបញ្ជា។ ជម្រើស -f និង - ជម្រើសប្រភព អាចត្រូវបានប្រើច្រើនដងនៅលើបន្ទាត់ពាក្យបញ្ជា។ Gawk អានអត្ថបទរបស់កម្មវិធីដូចថាគ្រប់ ឯកសារកម្មវិធី និងអត្ថបទពាក្យបញ្ជាត្រូវបានដាក់បញ្ចូលគ្នា។ នេះមានប្រយោជន៍សម្រាប់ការកសាងបណ្ណាល័យមុខងារ AWK ដោយមិនចាំបាច់បញ្ចូលវានៅក្នុងកម្មវិធី AWK នីមួយៗដែលប្រើវា។ វាក៏ផ្តល់នូវសមត្ថភាពក្នុងការលាយមុខងារបណ្ណាល័យជាមួយកម្មវិធីបន្ទាត់បញ្ជាផងដែរ។

អថេរបរិស្ថាន AWKPATH បញ្ជាក់ផ្លូវស្វែងរកដែលត្រូវប្រើនៅពេលរកឯកសារប្រភពដែលមានឈ្មោះថា -f option ។ ប្រសិនបើអថេរនេះមិនមានផ្លូវលំនាំដើមគឺ "។ : / usr / local / share / awk" ។ (ថតពិតប្រាកដអាចប្រែប្រួលអាស្រ័យលើរបៀបដែលត្រូវបានស្ថាបនានិងដំឡើង។ ) ប្រសិនបើឈ្មោះឯកសារដែលត្រូវបានផ្តល់ទៅជម្រើស -f មានតួអក្សរ `` / '' ទេគ្មានការស្វែងរកផ្លូវត្រូវបានធ្វើទេ។

Gawk ប្រតិបត្តិកម្មវិធី AWK តាមលំដាប់ដូចខាងក្រោម។ ដំបូងកិច្ចការអថេរទាំងអស់ដែលបានបញ្ជាក់តាមជម្រើស -v ត្រូវបានអនុវត្ត។ បន្ទាប់, gawk ចងក្រងកម្មវិធីទៅជាសំណុំបែបបទខាងក្នុងមួយ។ បន្ទាប់មក gawk ប្រតិបត្តិក្រមនៅក្នុងប្លុក ប៊ែល (ប្រសិនបើមាន) ហើយបន្ទាប់មកដំណើរការទៅអានឯកសារនីមួយៗដែលមានឈ្មោះនៅក្នុងអារ៉េ ARGV ។ ប្រសិនបើគ្មានឯកសារដែលមានឈ្មោះនៅលើបន្ទាត់ពាក្យបញ្ជាទេនោះនឹងអានការបញ្ចូលស្តង់ដារ។

ប្រសិនបើឈ្មោះឯកសារនៅលើបន្ទាត់ពាក្យបញ្ជាមានទម្រង់ var = val វាត្រូវបានចាត់ទុកជាការកំណត់អថេរ។ អថេរ var នឹងត្រូវបានផ្តល់តម្លៃ val ។ (វាកើតឡើងបន្ទាប់ពីប្លុក BEGIN ត្រូវបានដំណើរការ។ ) ការកំណត់អថេរបន្ទាត់ពាក្យបញ្ជាមានប្រយោជន៍បំផុតសម្រាប់ការផ្ដល់តម្លៃថាមវន្តទៅអថេរ AWK ប្រើដើម្បីត្រួតពិនិត្យថាតើធាតុបញ្ចូលត្រូវបានបំបែកទៅក្នុងវាលនិងកំណត់ត្រា។ វាមានប្រយោជន៍ផងដែរសម្រាប់ការគ្រប់គ្រងស្ថានភាពប្រសិនបើត្រូវការលេខច្រើនឆ្លងកាត់ឯកសារទិន្នន័យតែមួយ។

ប្រសិនបើតម្លៃនៃធាតុជាក់លាក់ណាមួយនៃ ARGV ទទេ ( "" ), gawk រំលងវា។

សម្រាប់កំណត់ត្រានីមួយៗក្នុងការបញ្ចូលការធ្វើតេស្ត gawk ដើម្បីមើលថាតើវាផ្គូផ្គងនឹង គំរូ ណាមួយនៅក្នុងកម្មវិធី AWK ។ សម្រាប់លំនាំនីមួយៗដែលត្រូវនឹងកំណត់ត្រា សកម្មភាព ដែលពាក់ព័ន្ធត្រូវបានប្រតិបត្តិ។ លំនាំត្រូវបានធ្វើតេស្តតាមលំដាប់ដែលវាកើតឡើងនៅក្នុងកម្មវិធី។

ចុងបញ្ចប់បន្ទាប់ពីការបញ្ចូលទាំងអស់ត្រូវអស់កម្លាំង, gawk ប្រតិបត្តិក្រមនៅក្នុងប្លុក END (s) បាន (ប្រសិនបើមាន) ។

អថេរកត់ត្រានិងវាល

អថេរ AWK គឺថាមវន្ត; ពួកវាកើតមានឡើងនៅពេលដែលវាត្រូវបានប្រើជាលើកដំបូង។ តម្លៃរបស់ពួកវាគឺលេខលេខអណ្តែតឬខ្សែអក្សរឬទាំងពីរអាស្រ័យលើរបៀបដែលពួកគេប្រើ។ AWK ក៏មានអារេមួយវិមាត្រផងដែរ។ អារេដែលមានវិមាត្រច្រើនអាចត្រូវបានក្លែងធ្វើ។ អថេរដែលបានកំណត់ជាមុនមួយចំនួនត្រូវបានកំណត់ជាការរត់កម្មវិធីមួយ។ ទាំងនេះនឹងត្រូវបានពិពណ៌នាតាមតម្រូវការនិងសង្ខេបខាងក្រោម។

កំណត់ត្រា

ជាធម្មតាកំណត់ត្រាត្រូវបានបំបែកដោយតួអក្សរបន្ទាត់ថ្មី។ អ្នកអាចត្រួតពិនិត្យរបៀបបំបែកកំណត់ត្រាដោយដាក់តម្លៃទៅអថេរ RS ដែលមានស្រាប់។ ប្រសិនបើ RS គឺជាតួអក្សរតែមួយតួអក្សរដែលបំបែកកំណត់ត្រា។ បើមិនដូច្នោះទេ RS គឺជាកន្សោមធម្មតា។ អត្ថបទក្នុងការបញ្ចូលដែលត្រូវគ្នាជាមួយកន្សោមធម្មតានេះបំបែកកំណត់ត្រា។ ទោះយ៉ាងណាក៏ដោយនៅក្នុងរបៀបដែលឆបគ្នាមានតែតួអក្សរដំបូងនៃតម្លៃខ្សែអក្សររបស់វាត្រូវបានប្រើសម្រាប់បំបែកកំណត់ត្រា។ ប្រសិនបើ RS ត្រូវបានកំណត់ទៅខ្សែអក្សរទទេនោះកំណត់ត្រាត្រូវបានបំបែកដោយបន្ទាត់ទទេ។ នៅពេល RS ត្រូវបានកំណត់ទៅខ្សែអក្សរទទេតួអក្សរបន្ទាត់ថ្មីតែងតែដើរតួនាទីជាសញ្ញាបំបែកវាលបន្ថែមលើអ្វីដែល FS អាចមាន។

វាល

នៅពេលកំណត់ត្រាចូលនីមួយៗត្រូវបានអាន gawk បំបែកទិន្នន័យទៅជា វាល ដោយប្រើតម្លៃនៃអថេរ FS ជាអ្នកបំបែកវាល។ ប្រសិនបើ FS ជាតួអក្សរតែមួយវាលត្រូវបានបំបែកដោយតួអក្សរនោះ។ ប្រសិនបើ FS ជាខ្សែអក្សរទទេនោះតួអក្សរនីមួយៗនឹងក្លាយទៅជាវាលដាច់ដោយឡែក។ បើមិនដូច្នោះទេ FS ត្រូវបានគេរំពឹងថានឹងក្លាយជាកន្សោមធម្មតា។ ក្នុងករណីពិសេសដែល FS ជាចន្លោះតែមួយវាលត្រូវបានបំបែកដោយចន្លោះនៃចន្លោះនិង / ឬថេបនិង / ឬបន្ទាត់ថ្មីៗ។ (ប៉ុន្តែសូមមើលការពិភាក្សានៃ --posix ខាងក្រោម) ។ ចំណាំ: តម្លៃនៃ IGNORECASE (សូមមើលខាងក្រោម) ក៏ប៉ះពាល់ដល់របៀបដែលវាលត្រូវបានបំបែកនៅពេល FS ជាកន្សោមធម្មតានិងរបៀបបំបែកកំណត់ត្រានៅពេល RS ជាកន្សោមធម្មតា។

ប្រសិនបើអថេរ FIELDWIDTHS ត្រូវបានកំណត់ទៅបញ្ជីលេខដែលបំបែកដោយឡែកវាលនីមួយៗត្រូវបានគេរំពឹងថានឹងមានទទឹងថេរហើយ ឃ្លា បំបែកទិន្នន័យដោយប្រើទទឹងដែលបានបញ្ជាក់។ តម្លៃនៃ FS ត្រូវបានមិនអើពើ។ ការផ្តល់តម្លៃថ្មីទៅ FS បដិសេធការប្រើ FIELDWIDTHS និងស្ដារឥរិយាបទលំនាំដើមឡើងវិញ។

វាលនីមួយៗនៅក្នុងកំណត់ត្រាបញ្ចូលអាចត្រូវបានយោងដោយទីតាំងរបស់វា $ 1 , $ 2 និងផ្សេងទៀត។ $ 0 គឺជាកំណត់ត្រាទាំងមូល។ វាលមិនត្រូវបានយោងដោយថេរទេ:

n = 5
បោះពុម្ព $ n

បោះពុម្ពវាលទីប្រាំនៅក្នុងកំណត់ត្រាបញ្ចូល។

អថេរ NF ត្រូវបានកំណត់ទៅចំនួនសរុបនៃវាលក្នុងកំណត់ត្រាបញ្ចូល។

សេចក្តីយោងទៅវាលដែលមិនមាន (ឧទាហរណ៍វាលបន្ទាប់ពី $ NF ) បង្កើតខ្សែអក្សរទទេ។ ទោះយ៉ាងណាក៏ដោយការផ្តល់តម្លៃទៅឱ្យវាលដែលមិនមាន (eg $ (NF + 2) = 5 ) បង្កើនតម្លៃនៃ NF បង្កើតវាលដែលធ្វើអន្តរកម្មណាមួយជាមួយខ្សែអក្សរទទេជាតម្លៃរបស់វាហើយបណ្តាលឱ្យតម្លៃនៃ $ 0 ត្រូវបានគណនាឡើងវិញដោយ វាលត្រូវបានបំបែកដោយតម្លៃ OFS ។ សេចក្តីយោងទៅវាលដែលមានលេខអវិជ្ជមានបង្កឱ្យមានកំហុសធ្ងន់ធ្ងរ។ ការថយចុះ NF បណ្តាលឱ្យតម្លៃនៃវាលកន្លងមកតម្លៃថ្មីត្រូវបានបាត់បង់និងតម្លៃនៃ $ 0 ត្រូវបាន recomputed ដោយវាលត្រូវបានបំបែកដោយតម្លៃ OFS

ការផ្តល់តម្លៃទៅវាលដែលមានស្រាប់ធ្វើឱ្យកំណត់ត្រាទាំងមូលត្រូវបានស្ថាបនាឡើងវិញនៅពេល $ 0 ត្រូវបានយោង។ ដូចគ្នានេះដែរការផ្តល់តម្លៃដល់ $ 0 ធ្វើឱ្យកំណត់ត្រាត្រូវ resplit បង្កើតតម្លៃថ្មីសម្រាប់វាល។

អថេរជាប់

អថេរដែលមានស្រាប់របស់ Gawk មាន:

ARGC

ចំនួនអាគុយម៉ង់បន្ទាត់ពាក្យបញ្ជា (មិនរួមបញ្ចូលជម្រើសទៅ gawk ឬប្រភពកម្មវិធី) ។

ARGIND

លិបិក្រមនៅក្នុង ARGV នៃឯកសារបច្ចុប្បន្នកំពុងត្រូវបានដំណើរការ។

ARGV

អារេអាគុយម៉ង់បន្ទាត់ពាក្យបញ្ជា។ អារេត្រូវបានលិបិក្រមពី 0 ទៅ ARGC - 1 ។ ថាមវន្តការផ្លាស់ប្តូរមាតិកានៃ ARGV អាចគ្រប់គ្រងឯកសារដែលបានប្រើសម្រាប់ទិន្នន័យ។

BINMODE

នៅលើប្រព័ន្ធមិន POSIX បញ្ជាក់ការប្រើរបៀប `` ប្រព័ន្ធគោលពីរ '' សម្រាប់ឯកសារ I / O ទាំងអស់។ តម្លៃជាលេខនៃ 1, 2 ឬ 3 បញ្ជាក់ថាឯកសារបញ្ចូលឯកសារលទ្ធផលឬឯកសារទាំងអស់រៀងៗខ្លួនគួរតែប្រើ I / O គោលពីរ។ តម្លៃខ្សែអក្សរ "r""w" បញ្ជាក់ថាឯកសារបញ្ចូលឬឯកសារលទ្ធផលរៀងគ្នាគួរតែប្រើ I / O គោលពីរ។ តម្លៃខ្សែអក្សរ "rw""wr" បញ្ជាក់ថាឯកសារទាំងអស់គួរតែប្រើ I / O គោលពីរ។ តម្លៃខ្សែអក្សរផ្សេងទៀតត្រូវបានចាត់ទុកជា "rw" ប៉ុន្តែបង្កើតសារព្រមាន។

CONVFMT

ទ្រង់ទ្រាយបម្លែងសម្រាប់លេខ, "% .6g" , តាមលំនាំដើម។

ENVIRON

អារេមួយដែលមានតម្លៃនៃបរិស្ថានបច្ចុប្បន្ន។ អារេត្រូវបានដាក់លិបិក្រមដោយអថេរបរិស្ថានធាតុនីមួយៗជាតម្លៃនៃអថេរនោះ (ឧទាហរណ៍ ENVIRON ["HOME"] អាចជា / home / arnold ) ។ ការផ្លាស់ប្តូរអារេនេះមិនប៉ះពាល់ដល់បរិស្ថានដែលបានមើលឃើញដោយកម្មវិធីដែល gawk ពងកូនតាមរយៈមុខងារបញ្ជូនបន្តឬ ប្រព័ន្ធ ()

ERRNO

ប្រសិនបើកំហុសឆ្គងប្រព័ន្ធកើតមានក្នុងការប្តូរទិសសម្រាប់ បន្ទាត់ទទួល ក្នុងកំឡុងពេលអានសម្រាប់ទទួល បន្ទាត់ ឬក្នុងពេល បិទ (បញ្ចប់) នោះ ERRNO នឹងមានខ្សែអក្សរដែលពណ៌នាកំហុស។ តម្លៃគឺអាស្រ័យលើការបកប្រែនៅក្នុងមូលដ្ឋានដែលមិនមែនជាភាសាអង់គ្លេស។

FIELDWIDTHS

បញ្ជីដែលបំបែកដោយវាលចន្លោះដែលមានសូន្យ។ ពេលកំណត់ gawk វិភាគការបញ្ចូលទៅក្នុងប្រអប់ទទឹងថេរជំនួសឱ្យការប្រើតម្លៃនៃអថេរ FS ជាអ្នកបំបែកវាល។

ឈ្មោះ​ឯកសារ

ឈ្មោះឯកសារបញ្ចូលបច្ចុប្បន្ន។ ប្រសិនបើគ្មានឯកសារត្រូវបានបញ្ជាក់នៅលើបន្ទាត់ពាក្យបញ្ជានោះតម្លៃរបស់ FILENAME គឺ `` - '' ។ ទោះជាយ៉ាងណាក៏ដោយ FILENAME មិនត្រូវបានកំនត់នៅក្នុងប្លុក BEGIN (លើកលែងតែកំណត់ដោយ getline ) ។

FNR

លេខកំណត់បញ្ចូលនៅក្នុងឯកសារបញ្ចូលបច្ចុប្បន្ន។

FS

សញ្ញាបំបែកវាលបញ្ចូលចន្លោះតាមលំនាំដើម។ សូមមើល វាល ខាងលើ។

IGNORECASE

ត្រួតពិនិត្យករណីប្រកាន់អក្សរតូចធំនៃប្រតិបត្តិការកន្សោមធម្មតានិងខ្សែអក្សរទាំងអស់។ ប្រសិនបើ IGNORECASE មានតម្លៃ ដែលមិនមែនសូន្យនោះការប្រៀបធៀបខ្សែអក្សរនិងការផ្គូផ្គងលំនាំក្នុងក្បួនការបំបែកវាលជាមួយ FS បំបែកកំណត់ត្រាដោយ RS ការបញ្ចេញកន្សោមធម្មតាដែលផ្គូផ្គងជាមួយ ~ និង ! ~ និង gensub () gsub () index () , ការផ្គូផ្គង () , split () , និង អនុ () ដែល មានស្រាប់នៅក្នុងមុខងារទាំងអស់មិនអើពើករណីនៅពេលធ្វើប្រតិបត្តិការកន្សោមធម្មតា។ ចំណាំ: ការបញ្ចូលអក្សររង មិន ត្រូវបានប៉ះពាល់ទេក៏មិនមែនជាមុខងារ asort ()

ដូច្នេះប្រសិនបើ IGNORECASE មិនស្មើសូន្យនោះ / aB / ផ្គូផ្គងខ្សែអក្សរទាំងអស់ "ab" "aB" "Ab" និង "AB" ។ ដូចទៅនឹងអថេរ AWK ទាំងអស់តម្លៃដំបូងនៃ IGNORECASE គឺសូន្យដូច្នេះកន្សោមធម្មតានិងប្រតិបត្តិការខ្សែអក្សរជាទូទៅគឺប្រកាន់អក្សរតូចធំ។ ក្រោមយូនីកស៊េរី ISO 8859-1 តួឡាតាំងឡាតាំងត្រូវបានប្រើនៅពេលមិនអើពើករណី។

LINT

ផ្តល់នូវការត្រួតពិនិត្យថាមវន្តនៃជម្រើស -lint ពីក្នុងកម្មវិធី AWK ។ នៅពេលដែលពិត, gawk បោះពុម្ពព្រមាន lint ។ នៅពេលដែលមិនពិត, វាមិន។ នៅពេលដែលបានផ្តល់តម្លៃខ្សែអក្សរ "ធ្ងន់ធ្ងរ" , ការព្រមាន lint ក្លាយជាកំហុសធ្ងន់ធ្ងរ, ដូច - ភ្លឺ = ស្លាប់ ។ តម្លៃពិតណាមួយផ្សេងទៀតគ្រាន់តែបោះពុម្ពការព្រមានប៉ុណ្ណោះ។

NF

ចំនួនវាលក្នុងកំណត់ត្រាបញ្ចូលបច្ចុប្បន្ន។

NR

ចំនួនសរុបនៃទិន្នន័យបញ្ចូលដែលបានឃើញរហូតមកដល់ពេលនេះ។

OFMT

ទ្រង់ទ្រាយលទ្ធផលសម្រាប់លេខ "% .6g" តាមលំនាំដើម។

OFS

សញ្ញាបំបែកវាលលទ្ធផលជាចន្លោះតាមលំនាំដើម។

ORS

ឧបករណ៍បំបែកកំណត់ត្រាលទ្ធផលតាមលំនាំដើមបន្ទាត់ថ្មី។

PROCINFO

ធាតុនៃអារេនេះផ្តល់នូវលទ្ធភាពទទួលបានព័ត៌មានអំពីកម្មវិធី AWK កំពុងដំណើរការ។ នៅលើប្រព័ន្ធខ្លះអាចមានធាតុនៅក្នុងអារេ "group1" តាមរយៈ "group n " សម្រាប់ n មួយចំនួនដែលជាចំនួនក្រុមបន្ថែមដែលដំណើរការមាន។ ប្រើសញ្ញាប្រមាណវិធីក្នុងការសាកល្បងសម្រាប់ធាតុទាំងនេះ។ ធាតុផ្សំខាងក្រោមនេះត្រូវបានធានាថាអាចមាន:

PROCINFO ["egid"]

តម្លៃនៃការហៅប្រព័ន្ធ getegid (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 ប្រសិនបើមិនមានការប្រកួត។ (នេះមានន័យថាតួអក្សរចាប់ផ្តើមពីលេខមួយ។ )

ពណ៌ក្រហម

ប្រវែងខ្សែអក្សរដែលផ្គូផ្គងតាម ការផ្គូផ្គង () ; -1 ប្រសិនបើមិនមានការប្រកួត។

SUBSEP

តួអក្សរដែលប្រើដើម្បីបំបែកអក្សរតូចច្រើននៅក្នុងធាតុអារេតាមលំនាំដើម "\ 034"

TEXTDOMAIN

ដែនអត្ថបទនៃកម្មវិធី AWK; បានប្រើដើម្បីរកការបកប្រែដែលបានធ្វើមូលដ្ឋានីយកម្មសម្រាប់ខ្សែអក្សររបស់កម្មវិធី។

អារេ

អារេត្រូវបានចុះក្រោមជាមួយកន្សោមរវាងតង្កៀប ( [ និង ] ) ។ ប្រសិនបើកន្សោមគឺជាបញ្ជីកន្សោមមួយ ( expr , expr ... ) បន្ទាប់មកអថេរអារេគឺជាខ្សែអក្សរដែលមានបន្សំនៃតម្លៃ (string) នៃកន្សោមនីមួយៗដែលបានបំបែកដោយអថេរនៃ SUBSEP ។ មធ្យោបាយនេះត្រូវបានប្រើដើម្បីក្លែងធ្វើអារ៉េពង្រីកវិមាត្រ។ ឧទាហរណ៍:

i = "A"; j = "B"; k = "C"
x [i, j, k] = "សួស្តីពិភពលោក \ n"

ផ្ដល់ខ្សែអក្សរ "hello world \ n" ទៅធាតុនៃអារេអាដែលត្រូវបានធ្វើលិបិក្រមដោយខ្សែអក្សរ "A \ 034B \ 034C" ។ អារេទាំងអស់នៅក្នុង AWK គឺជាប់ទាក់ទងដូចជាលិបិក្រមដោយតម្លៃខ្សែអក្សរ។

សញ្ញាប្រមាណវិធីពិសេសអាចត្រូវបានប្រើក្នុងសេចក្តីថ្លែងការណ៍មួយឬ ពេល ដើម្បីមើលថាតើអារេមួយមានលិបិក្រមដែលមានតម្លៃពិសេស។

ប្រសិនបើ (តម្លៃក្នុងអារេ) បោះពុម្ពអារ៉េ [VAL]

ប្រសិនបើអារេមានអក្សរតូចច្រើនប្រើ (i, j) ក្នុង array

ការបង្កើតក៏អាចត្រូវបានប្រើ សម្រាប់ រង្វិលជុំដើម្បីធ្វើអធិប្បាយលើធាតុទាំងអស់នៃអារេ។

ធាតុអាចត្រូវបានលុបចេញពីអារេដោយប្រើសេចក្តី លុប ។ សេចក្តីថ្លែងការណ៍ លុប ក៏អាចត្រូវបានប្រើដើម្បីលុបមាតិកាទាំងមូលនៃអារេមួយដោយគ្រាន់តែបញ្ជាក់ឈ្មោះអារេដោយមិនមានអក្សរតូចក្រោម។

ការវាយអថេរនិងការប្រែចិត្តជឿ

អថេរនិងវាលអាចជាលេខ (អណ្តែត) លេខឬខ្សែអក្សរឬទាំងពីរ។ របៀបដែលតម្លៃនៃអថេរត្រូវបានបកប្រែអាស្រ័យលើបរិបទរបស់វា។ បើប្រើក្នុងកន្សោមលេខវានឹងត្រូវបានចាត់ទុកជាលេខបើប្រើជាខ្សែអក្សរវានឹងត្រូវបានចាត់ទុកជាខ្សែអក្សរ។

ដើម្បីបង្ខំអថេរដែលត្រូវចាត់ទុកជាលេខមួយបន្ថែម 0 ទៅវា។ ដើម្បីបង្ខំឱ្យវាត្រូវបានចាត់ទុកជាខ្សែអក្សរមួយបញ្ចូលគ្នាជាមួយខ្សែអក្សរទទេ។

នៅពេលខ្សែអក្សរត្រូវបានបំលែងជាលេខការបម្លែងត្រូវបានសម្រេចដោយប្រើ strtod (3) ។ លេខត្រូវបានបម្លែងទៅជាខ្សែអក្សរមួយដោយប្រើតម្លៃនៃ CONVFMT ជាខ្សែអក្សរទ្រង់ទ្រាយសម្រាប់ sprintf (3) ដោយមានតម្លៃជាលេខនៃអថេរជាអាគុយម៉ង់។ ទោះជាយ៉ាងណាក៏ដោយទោះបីជាចំនួនទាំងអស់នៅក្នុង AWK ជាអណ្តែតក៏ដោយតំលៃអាំងតេក្រាល តែងតែ ត្រូវបានបម្លែងជាចំនួនគត់។ ដូច្នេះផ្តល់ឱ្យ

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

អថេរ b មានតម្លៃខ្សែអក្សរ "12" និងមិន "12.00" ទេ។

Gawk ធ្វើការប្រៀបធៀបដូចខាងក្រោម: ប្រសិនបើអថេរពីរគឺលេខវាត្រូវបានប្រៀបធៀបជាលេខ។ ប្រសិនបើតម្លៃមួយមានតួលេខនិងមួយទៀតមានតម្លៃខ្សែអក្សរដែលជាខ្សែអក្សរលេខនោះការប្រៀបធៀបក៏ត្រូវបានធ្វើដោយលេខផងដែរ។ បើមិនដូច្នោះទេតម្លៃជាលេខត្រូវបានបម្លែងទៅជាខ្សែអក្សរហើយការប្រៀបធៀបខ្សែអក្សរត្រូវបានអនុវត្ត។ ខ្សែអក្សរពីរត្រូវបានប្រៀបធៀបជាខ្សែអក្សរ។ ចំណាំថាស្តង់ដារ POSIX អនុវត្តគោលគំនិតនៃ `` ខ្សែអក្សរលេខ '' នៅគ្រប់ទីកន្លែងសូម្បីតែឃ្លាជាប់ជានិច្ច។ ទោះជាយ៉ាងណាក៏ដោយនេះគឺជាការមិនត្រឹមត្រូវហើយមិនត្រូវធ្វើបែបនេះទេ។ (សំណាងល្អនេះត្រូវបានជួសជុលនៅក្នុងកំណែស្តង់ដាក្រោយ។ )

ចំណាំថាអថេរខ្សែអក្សរដូចជា "57" មិនមែន ជាខ្សែលេខទេវាជាថេរ។ គំនិតនៃ `` ខ្សែអក្សរលេខ '' អនុវត្តតែលើវាលការបញ្ចូល ចង្វាក់ បញ្ចូល FILENAME ធាតុ ARGV ធាតុ ENVIRON និងធាតុអារ៉េដែលបង្កើតឡើងដោយ បំបែក () ដែលជាខ្សែអក្សរលេខ។ គំនិតជាមូលដ្ឋានគឺថា ការបញ្ចូលរបស់អ្នកប្រើ ហើយមានតែការបញ្ចូលរបស់អ្នកប្រើប្រាស់ដែលមើលទៅលេខតែប៉ុណ្ណោះគួរតែត្រូវបានចាត់ទុកតាមវិធីនោះ។

អថេរមិនចាប់ផ្ដើមមានតម្លៃលេខ 0 និងតម្លៃខ្សែអក្សរ (ខ្សែអក្សរទទេឬទទេ) ។

តិត្ថិភាព Octal និង Hexadecimal

ចាប់ផ្តើមជាមួយនឹងកំណែ 3.1 អ្នកអាចប្រើអថេរគោលប្រាំបីនិងប្រព័ន្ធគោលដប់ប្រាំមួយនៅក្នុងកូដប្រភពកម្មវិធី AWK របស់អ្នក។ ឧទាហរណ៍តម្លៃគោលប្រាំបី 011 គឺស្មើដប់និងគោលដប់ប្រាំមួយ 0x11 ស្មើដប់។

ខ្សែអក្សរថេរ

អថេរក្នុង AWK គឺជាតួអក្សរដែលបានភ្ជាប់រវាងសញ្ញាសម្រង់ពីរ ( " ) ។ ក្នុងខ្សែអក្សរ ស៊េរីគេចចេញ មួយចំនួនត្រូវបានទទួលស្គាល់ដូចជានៅក្នុងគ។

\\

ជាសញ្ញាទ្រេតទ្រេត។

\ a

តួអក្សរ '`ជូនដំណឹង' '; ជាធម្មតាតួអក្សរ ASCII BEL ។

\ ខ

backspace ។

\ f

form-feed ។

\ n

បន្ទាត់ថ្មី។

\ r

ត្រឡប់មកវិញ។

\ t

ផ្ទាំងផ្ដេក។

\ v

ផ្ទាំងបញ្ឈរ។

\ x តួលេខគោលដប់ប្រាំមួយ

តួអក្សរតំណាងដោយខ្សែអក្សរលេខគោលដប់ប្រាំៈបន្ទាប់ពី \ x ។ ដូចនៅក្នុង ANSIC ដែរតួលេខទាំងអស់តាមលេខគោលដប់ប្រាំមួយត្រូវបានគេចាត់ទុកថាជាផ្នែកមួយនៃលំដាប់រត់គេចខ្លួន។ (លក្ខណៈពិសេសនេះគួរតែប្រាប់យើងអំពីការរចនាភាសាដោយគណៈកម្មាធិ) ។ ឧទាហរណ៍ "\ x1B" គឺជាតួអក្សរ ASCIIESC (គេចចេញ) ។

\ ddd

តួអង្គត្រូវបានតំណាងដោយលេខលំដាប់ទី 1, 2- ឬ 3 តួលេខនៃខ្ទង់ដប់។ ឧទាហរណ៍ "033" គឺជាតួអក្សរ ASCII ESC (escape) ។

\ c

ព្យញ្ជនៈព្យញ្ជនៈ c

លំដាប់ការគេចអាចត្រូវបានប្រើក្នុងកន្សោមធម្មតាថេរ (ឧ។ / [\ t \ f \ n \ r \ v] / ផ្គូផ្គងតួអក្សរដកឃ្លា) ។

នៅក្នុងរបៀបដែលត្រូវគ្នាតួអង្គដែលតំណាងដោយលំដាប់រត់គេងប្រាំបីនិងប្រាំបីគោលដប់ប្រាំមួយត្រូវបានចាត់ទុកតាមព្យញ្ជនៈនៅពេលដែលត្រូវបានប្រើនៅក្នុងថេរកន្សោមថេរ។ ដូច្នេះ / a \ 52b / ស្មើនឹង / a \ * b /

លំនាំនិងសកម្មភាព

AWK គឺជាភាសាតម្រង់ជួរ។ លំនាំនេះមកជាមុនហើយបន្ទាប់មកសកម្មភាព។ សេចក្តីថ្លែងការណ៍សកម្មភាពត្រូវបានភ្ជាប់នៅ { និង } ។ ទាំងលំនាំអាចត្រូវបានបាត់ឬសកម្មភាពអាចបាត់ហើយប៉ុន្តែមិនមែនជាការពិតទេ។ ប្រសិនបើលំនាំកំពុងបាត់សកម្មភាពត្រូវបានប្រតិបត្តិសម្រាប់រាល់កំណត់ត្រាបញ្ចូល។ សកម្មភាពដែលបាត់គឺស្មើនឹង

{print}

ដែលបោះពុម្ពត្រាទាំងមូល។

យោបល់ចាប់ផ្ដើមដោយតួអក្សរ `` # '' ហើយបន្តរហូតដល់ចុងបញ្ចប់នៃបន្ទាត់។ បន្ទាត់ទទេអាចត្រូវបានប្រើដើម្បីបំបែកសេចក្តីថ្លែងការណ៍។ ជាធម្មតាសេចក្ដីថ្លែងការណ៍បញ្ចប់ជាមួយបន្ទាត់ថ្មីទោះយ៉ាងណានេះមិនមែនជាករណីសម្រាប់បន្ទាត់ដែលបញ្ចប់ដោយ ``, '', { , ? , : , &&|| ។ បន្ទាត់ដែលបញ្ចប់នៅក្នុង ធ្វើផ្សេងទៀត ក៏មានសេចក្តីថ្លែងការណ៍របស់ពួកគេដោយស្វ័យប្រវត្តិនៅលើបន្ទាត់ដូចខាងក្រោម។ ក្នុងករណីផ្សេងទៀតបន្ទាត់អាចត្រូវបានបន្តដោយបញ្ចប់វាដោយ 'ក្នុងករណីដែលបន្ទាត់ថ្មីនឹងត្រូវបានមិនអើពើ។

សេចក្តីថ្លែងការណ៍ច្រើនអាចត្រូវបានដាក់នៅលើបន្ទាត់មួយដោយបំបែកវាជាមួយ ``; '' ។ វាអនុវត្តទាំងសេចក្តីថ្លែងនៅក្នុងផ្នែកសកម្មភាពនៃគូសកម្មភាពលំនាំ (ករណីធម្មតា) និងទៅទ្រឹស្តីសកម្មភាពសកម្មភាពខ្លួនឯង។

លំនាំ

លំនាំ AWK អាចជាផ្នែកមួយដូចខាងក្រោម:

BEGIN END / កន្សោមធម្មតា / លំនាំ កន្សោមទំនាក់ទំនង និង លំនាំ គំរូ || គំរូ លំនាំ ? លំនាំ : លំនាំ ( លំនាំ ) ! លំនាំ pattern1 , pattern2

BEGIN និង END គឺជាប្រភេទពិសេសពីរប្រភេទដែលមិនត្រូវបានសាកល្បងប្រឆាំងនឹងធាតុចូល។ ផ្នែកសកម្មភាពនៃគំរូ BEGIN ទាំងអស់ត្រូវបានបញ្ចូលចូលគ្នាដូចជាប្រសិនបើសេចក្តីថ្លែងការណ៍ទាំងអស់ត្រូវបានសរសេរនៅក្នុងប្លុក ប៊ែល តែមួយ។ ពួកវាត្រូវបានប្រតិបត្តិមុនពេលអានណាមួយ។ ស្រដៀងគ្នាដែរប្លុក END ទាំងអស់ត្រូវបានរួមបញ្ចូលគ្នាហើយប្រតិបត្តិនៅពេលបញ្ចូលទាំងអស់អស់ (ឬពេលប្រតិបត្តិ ចេញ ត្រូវបានប្រតិបត្តិ) ។ គំរូ BEGIN និង END មិនអាចត្រូវបានផ្សំជាមួយលំនាំផ្សេងទៀតក្នុងកន្សោមលំនាំ។ លំនាំ BEGIN និង END មិនអាចបាត់ផ្នែកសកម្មភាព។

ចំពោះ / កន្សោម / លំនាំ ធម្មតា សេចក្តីថ្លែងការណ៍ដែលជាប់ទាក់ទងត្រូវបានប្រតិបត្តិសម្រាប់កំណត់ត្រាបញ្ចូលនីមួយៗដែលត្រូវគ្នានឹងកន្សោមធម្មតា។ កន្សោមធម្មតាគឺដូចគ្នានឹង អថេរ ក្នុង (1) ហើយត្រូវបានសង្ខេបខាងក្រោម។

កន្សោមទំនាក់ទំនង អាចប្រើប្រតិបត្តិករណាមួយដែលបានកំណត់ដូចខាងក្រោមនៅក្នុងផ្នែកស្តីពីសកម្មភាព។ ទាំងនេះជាទូទៅសាកល្បងថាតើវាលជាក់លាក់ណាដែលផ្គូផ្គងកន្សោមធម្មតា។

&& , || និង ! ប្រតិបត្តិករគឺឡូជីខល AND ឡូជីខលនិងឡូជីខលមិនដូចរៀងៗខ្លួនទេ។ ពួកវាចេះធ្វើការវាស់វែងសៀគ្វីខ្លីៗក៏ដូចជា C ដែរហើយត្រូវបានប្រើសម្រាប់បន្សំនូវកន្សោមគំរូដើម។ ដូចក្នុងភាសាភាគច្រើនវង់ក្រចកអាចត្រូវបានប្រើដើម្បីផ្លាស់ប្តូរលំដាប់នៃការវាយតម្លៃ។

សញ្ញាបច្ចេកវិទ្យា : គឺដូចជាសញ្ញាប្រមាណវិធីដូចគ្នានៅក្នុងគ។ ប្រសិនបើគំរូទីមួយពិតប្រាកដនោះគំរូដែលប្រើសម្រាប់ការធ្វើតេស្តគឺជាគំរូទីពីរបើមិនដូច្នោះទេវាគឺជាទីបី។ មានតែគំរូមួយក្នុងចំណោមលំនាំទីពីរនិងទីបីប៉ុណ្ណោះដែលត្រូវបានវាយតម្លៃ។

លំនាំលំនាំទី 1 ទម្រង់ 2 នៃកន្សោមមួយត្រូវបានគេហៅថា លំនាំ ជួរ ។ វាត្រូវគ្នានឹងកំណត់ត្រាបញ្ចូលទាំងអស់ដែលចាប់ផ្តើមដោយកំណត់ត្រាដែលផ្គូផ្គង លំនាំ 1 និងបន្តរហូតដល់កំណត់ត្រាដែលផ្គូផ្គង លំនាំ 2 រាប់បញ្ចូល។ វាមិនផ្សំជាមួយប្រភេទនៃការបញ្ចេញមតិលំនាំផ្សេងទៀតទេ។

កន្សោមធម្មតា

កន្សោមធម្មតាគឺជាប្រភេទដែលត្រូវបានរកឃើញក្នុង ។ ពួកវាមានតួអក្សរដូចខាងក្រោម:

ផ្គូផ្គងមិនមែន metacharacter c

\ c

ផ្គូផ្គងតួអក្សរព្យញ្ជនៈ c

ផ្គូផ្គងតួអក្សរណាមួយ រួមទាំង បន្ទាត់ថ្មី។

^

ផ្គូផ្គងដើមនៃខ្សែអក្សរ។

$

ផ្គូផ្គងចុងបញ្ចប់នៃខ្សែអក្សរ។

[ abc ... ]

បញ្ជីតួអក្សរផ្គូផ្គងតួអក្សរណាមួយនៃ abc ...

[^ abc ... ]

បញ្ជីតួអក្សរអវិជ្ជមានផ្គូផ្គងតួអក្សរណាមួយលើកលែងតែ abc ...

r1 | r2

ជម្មើសជំនួស: ផ្គូផ្គងទាំង r1r2

r1r2

ស៊ីគ្នា: ផ្គូផ្គង r1 , ហើយបន្ទាប់មក r2

r +

ផ្គូផ្គងមួយឬច្រើនរបស់ r

r *

ផ្គូរផ្គងលេខសូន្យឬច្រើនរបស់ r

r ?

ផ្គូផ្គងសូន្យឬ r របស់។

( r )

ការដាក់ជាក្រុម: ផ្គូផ្គង r

r { n }

r { n ,}

r { n , m } លេខមួយឬពីរនៅក្នុងដង្កៀបតំណាងឱ្យ កន្សោមចន្លោះ ។ ប្រសិនបើមានលេខមួយនៅក្នុងដង្កៀបនោះកន្សោមធម្មតាពីមុន r ត្រូវបានធ្វើឡើងវិញ n ដង។ ប្រសិនបើមានលេខពីរដាច់ដោយឡែកដោយសញ្ញាក្បៀស r ត្រូវបានធ្វើម្តងទៀតពី n ទៅ m ដង។ ប្រសិនបើមានលេខមួយដែលបន្តដោយសញ្ញាក្បៀស, បន្ទាប់មក r ត្រូវបានគេធ្វើម្តងទៀតយ៉ាងហោចណាស់ n ដង។

កន្សោមចន្លោះត្រូវបានប្រើតែក្នុងករណី ដែល - orix -ចន្លោះ - interval ត្រូវបានបញ្ជាក់នៅលើបន្ទាត់ពាក្យបញ្ជាប៉ុណ្ណោះ។

\ y

ផ្គូផ្គងខ្សែអក្សរទទេនៅដើមដំបូងឬចុងបញ្ចប់នៃពាក្យមួយ។

\ ខ

ផ្គូផ្គងខ្សែអក្សរទទេក្នុងពាក្យមួយ។

\\

ផ្គូផ្គងខ្សែអក្សរទទេនៅដើមពាក្យមួយ។

\>

ផ្គូផ្គងខ្សែអក្សរទទេនៅចុងពាក្យ។

\ w

ផ្គូរផ្គងពាក្យតួអក្សរពាក្យសំដី (តួអក្សរលេខឬសញ្ញាគូសបន្ទាត់) ។

\ W

ផ្គូផ្គងតួអក្សរណាមួយដែលមិនមែនជាពាក្យបង្កើត។

\ '

ផ្គូផ្គងខ្សែអក្សរទទេនៅដើមសតិបណ្តោះអាសន្ន (ខ្សែអក្សរ) ។

\ '

ផ្គូផ្គងខ្សែអក្សរទទេនៅចុងបញ្ចប់របស់សតិបណ្ដោះអាសន្ន។

លំដាប់អថេរដែលមានសុពលភាពក្នុងថេរឃ្លា (សូមមើលខាងក្រោម) មានសុពលភាពក្នុងកន្សោមធម្មតាផងដែរ។

ថ្នាក់តួអក្សរ គឺជាលក្ខណៈពិសេសថ្មីមួយដែលបានណែនាំក្នុងស្តង់ដារ POSIX ។ ថ្នាក់តួអក្សរគឺជាកំណត់ពិសេសសម្រាប់ការពិពណ៌នាបញ្ជីតួអក្សរដែលមានគុណលក្ខណៈជាក់លាក់ប៉ុន្តែតួអក្សរពិតដែលខ្លួនគេផ្ទាល់អាចប្រែប្រួលពីប្រទេសមួយទៅប្រទេសមួយនិង / ឬពីសំណុំតួអក្សរទៅសំណុំតួអក្សរ។ ឧទាហរណ៍សញ្ញាណនៃតួអក្សរអក្សរសាស្ត្រមានភាពខុសគ្នានៅសហរដ្ឋអាមេរិកនិងបារាំង។

ថ្នាក់តួអក្សរត្រឹមត្រូវតែក្នុងកន្សោមធម្មតា ខាងក្នុង តង្កៀបនៃបញ្ជីតួអក្សរប៉ុណ្ណោះ។ ថ្នាក់តួអក្សរមាន [: ជាពាក្យគន្លឹះដែលតំណាងឱ្យថ្នាក់និង :] ។ ថ្នាក់តួអក្សរដែលកំណត់ដោយស្តង់ដារ POSIX គឺ:

[: alnum:]

អក្សរក្រមលេខ។

[: alpha:]

តួអក្សរអក្សរសាស្ត្រ។

[: ទទេ:]

អវកាសឬផ្ទាំងតួអក្សរ។

[: cntrl:]

ពិនិត្យតួអក្សរ។

[: ខ្ទង់:]

តួអក្សរលេខ។

[: ក្រាប:]

តួអក្សរដែលអាចបោះពុម្ពនិងមើលឃើញ។ (ទំហំអាចបោះពុម្ពបានប៉ុន្តែមិនអាចមើលឃើញបានទេខណៈពេលដែលអា មួយ គឺទាំងពីរ។ )

[: ទាបជាង:]

តួអក្សរអក្សរកាត់តួអក្សរតូច។

[: បោះពុម្ព:]

តួអក្សរអាចបោះពុម្ពបាន (តួអក្សរដែលមិនមានវត្ថុបញ្ជា។ )

[: punct:]

តួអក្សរវណ្ណយុត្ត (តួអក្សរដែលមិនមែនជាតួអក្សរតួលេខតួអក្សរត្រួតពិនិត្យឬតួអក្សរដកឃ្លា) ។

[: ចន្លោះ:]

តួអក្សរដកឃ្លា (ដូចជាចន្លោះផ្ទាំងនិងចំណីទំរង់ដើម្បីដាក់ឈ្មោះមួយចំនួន) ។

[: ខាងលើ:]

អក្សរខ្ពស់តួអក្សរអក្សរសាស្ត្រ។

[: xdigit:]

តួអក្សរដែលជាតួលេខគោលដប់ប្រាំមួយ។

ឧទាហរណ៍មុននឹងស្តង់ដា POSIX ដើម្បីផ្គូផ្គងតួអក្សរអក្សរក្រមអ្នកត្រូវសរសេរ / [A-Za-z0-9] / ។ ប្រសិនបើសំណុំតួអក្សររបស់អ្នកមានតួអក្សរអក្សរសាស្ត្រដទៃទៀតវានឹងមិនត្រូវគ្នានឹងពួកវាទេហើយប្រសិនបើតួអក្សររបស់អ្នកត្រូវបានប្រមូលផ្តុំខុសពី ASCII នោះវាអាចមិនដូចគ្នានឹងតួអក្សរលេខ ASCII ។ ជាមួយថ្នាក់តួអក្សរ POSIX អ្នកអាចសរសេរ / [[: alnum:]] ហើយវាត្រូវគ្នានឹងតួអក្សរតាមតួអក្សរនិងតួអក្សរក្នុងសំណុំតួអក្សររបស់អ្នក។

លំដាប់ពិសេសបន្ថែមពីរអាចលេចឡើងក្នុងបញ្ជីតួអក្សរ។ ទាំងនេះអនុវត្តចំពោះសំណុំតួអក្សរដែលមិនមែនជា ASCII ដែលអាចមាននិមិត្តសញ្ញាតែមួយដែលហៅថា វត្ថុ ដែលត្រូវបានតំណាងច្រើនជាងមួយតួអក្សរព្រមទាំងតួអក្សរជាច្រើនដែលស្មើគ្នាសម្រាប់ការ ប្រមូល ឬតម្រៀបគោលបំណង។ (ឧ។ ជាភាសាបារាំង `` e '' និង `e` សង្កត់ធ្ងន់ '' គឺស្មើ។ )

សម្រាំងនិមិត្តសញ្ញា

និមិត្តសញ្ញាប្រមូលផ្ដុំជាធាតុភ្ជាប់ច្រើនដែលភ្ជាប់នៅ [។ និង ។ ] ។ ឧទាហរណ៍ប្រសិនបើ ch គឺជាធាតុដែលបូកបញ្ចូលនោះ [[។ ch ។ ]] ជាកន្សោមធម្មតាដែលផ្គូផ្គងធាតុភ្ជាប់នេះខណៈពេល [ch] ជាកន្សោមធម្មតាដែលផ្គូផ្គងទាំង ch

ថ្នាក់សមមូល

ថ្នាក់សមមូលគឺជាឈ្មោះមូលដ្ឋានជាក់លាក់សម្រាប់បញ្ជីតួអក្សរដែលស្មើ។ ឈ្មោះនេះត្រូវបានរុំព័ទ្ធនៅក្នុង [= និង =] ។ ឧទាហរណ៍ e អាចត្រូវបានប្រើដើម្បីតំណាងឱ្យទាំងអស់នៃ `` e, `` `` e ',' 'និង `` e` ។ ' 'ក្នុងករណីនេះ [[= e =]] គឺជាកន្សោមធម្មតាមួយដែល ផ្គូផ្គងនឹង e , e 'e`

លក្ខណៈពិសេសទាំងនេះមានតម្លៃខ្លាំងណាស់នៅក្នុងតំបន់ដែលមិននិយាយភាសាអង់គ្លេស។ មុខងារបណ្ណាល័យដែល gawk ប្រើសម្រាប់កន្សោមធម្មតាផ្គូផ្គងបច្ចុប្បន្នទទួលស្គាល់ថ្នាក់តួអក្សរ POSIX តែប៉ុណ្ណោះ។ ពួកគេមិនស្គាល់និមិត្តសញ្ញាការប្រមូលផ្តុំឬថ្នាក់សមមូល។

\ y , \\ B , \\\\\\\\\\\\\\\\\\\\ \\ \\ \\\\\\\\\ \\\\ \\ \\ \\ \\ \\ \\ \\ \\ \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\ ពួកវាជាផ្នែកបន្ថែមដែលមានមូលដ្ឋាននៅលើបណ្ណាល័យនៅក្នុងបណ្ណាល័យកន្សោមធម្មតារបស់ GNU ។

ជម្រើសបន្ទាត់ពាក្យបញ្ជាផ្សេងៗត្រួតពិនិត្យរបៀបដែល gawk បកប្រែតួអក្សរក្នុងកន្សោមធម្មតា។

គ្មានជម្រើស

ក្នុងករណីលំនាំដើម gawk ផ្តល់នូវសម្ភារៈទាំងអស់នៃកន្សោមធម្មតា POSIX និងប្រតិបត្តិករកន្សោមធម្មតារបស់ GNU ដែលបានពិពណ៌នាខាងលើ។ ទោះយ៉ាងណាកន្សោមចន្លោះមិនត្រូវបានគាំទ្រទេ។

- ពេជ្រ

មានតែកន្សោមធម្មតា POSIX ប៉ុណ្ណោះដែលត្រូវបានគាំទ្រប្រតិបត្តិការរបស់ GNU មិនមានលក្ខណៈពិសេសទេ។ (ឧ, \ w គន នឹងវ៉ុលព្យញ្ជនៈ) ។ កន្សោមចន្លោះត្រូវបានអនុញ្ញាត។

--traditional

កន្សោមធម្មតារបស់ Unix awk ត្រូវបានផ្គូផ្គង។ សញ្ញាប្រមាណវិធី GNU មិនពិសេសទេកន្សោមចន្លោះមិនអាចប្រើបានហើយមិនមែនជាប្រភេទតួអក្សរ POSIX ( [[alnum:]] ជាដើម។ តួអក្សរដែលបានពិពណ៌នាដោយស៊េរីគេចចេញគោលប្រាំបីនិងប្រព័ន្ធគោលដប់ប្រាំមួយត្រូវបានចាត់ទុកតាមព្យញ្ជនៈទោះបីជាពួកវាតំណាងឱ្យ metacharacters កន្សោមធម្មតា។

--re-interval

អនុញ្ញាតកន្សោមចន្លោះក្នុងកន្សោមធម្មតាបើទោះបីជា - ត្រូវបានផ្តល់ឱ្យ។

សកម្មភាព

សេចក្តីថ្លែងការណ៍សកម្មភាពត្រូវបានភ្ជាប់ក្នុងដង្កៀប { និង } ។ សេចក្តីថ្លែងការណ៍សកម្មភាពមានការចេញសេចក្តីថ្លែងការណ៍ធម្មតាដែលមានលក្ខខណ្ឌនិងរង្វិលជុំដែលរកឃើញនៅក្នុងភាសាភាគច្រើន។ សញ្ញាប្រមាណវិធីបញ្ជាសេចក្តីថ្លែងនិងសេចក្តីថ្លែងការណ៍ទិន្នផល / បញ្ចេញដែលអាចប្រើបានត្រូវបានគេធ្វើតាមលំនាំក្រោយគេនៅគ។

ប្រតិបត្តិករ

ប្រតិបត្តិករនៅ AWK ក្នុងលំដាប់ថយចុះអាទិភាពគឺ

( ... )

ដាក់ជាក្រុម

$

សេចក្តីយោងវាល។

++ -

ការបង្កើននិងការបន្ថយ, ទាំងបុព្វបទនិង postfix ។

^

និទស្សន្ត ( ** អាចត្រូវបានប្រើនិង ** = សម្រាប់ប្រតិបត្តិករបែងចែក) ។

+ -!

អាតូមបូកដកអវិជ្ជមាននិងអវិជ្ជមាន។

* /%

គុណគុណ, បែងចែកនិងម៉ូឌុល។

+ -

ការបូកនិងដក។

ចន្លោះ

ស៊ុមអន្ទាក់។

<>

<=> =

! = == ប្រតិបត្តិករទំនាក់ទំនងធម្មតា។

~! ~

ផ្គូផ្គងកន្សោមធម្មតា, ការប្រកួតបដិសេធ។ ចំណាំ: កុំប្រើកន្សោមធម្មតាថេរ ( / foo / ) នៅខាងឆ្វេងដៃនៃ ~! ~ ។ ប្រើតែមួយនៅខាងស្តាំដៃ។ កន្សោម / foo / ~ exp មានអត្ថន័យដូចគ្នានឹង (($ 0 ~ / foo /) ~ exp ។ នេះជាធម្មតា មិនមែន ជាអ្វីដែលត្រូវបានគេប៉ងទុក។

នៅក្នុង

សមាជិកអារេ។

&&

ឡូជីខល AND ។

||

តក្ក OR ។

?:

កន្សោមលក្ខខណ្ឌ។ នេះមានសំណុំបែបបទ expr1 ? expr2 : expr3 ។ ប្រសិនបើ expr1 គឺពិតតម្លៃនៃកន្សោមគឺ expr2 បើមិនដូច្នោះវាគឺ expr3 ។ មានតែមួយនៃ expr2 និង expr3 ត្រូវបានវាយតម្លៃ។

= + = - =

* = / =% = ^ = កិច្ចការ។ កិច្ចការទាំងស្រុង ( var = value ) និង assignment-assignment (ទម្រង់ផ្សេងៗទៀត) ត្រូវបានគាំទ្រ។

របាយការណ៍ត្រួតពិនិត្យ

សេចក្តីពិនិត្រយបញ្ជាមានដូចខាងក្រោមៈ

ប្រសិនបើ [ condition ] statement [ statement ផ្សេងទៀត ] ខណៈពេល សេចក្តីថ្លែងការណ៍ ( condition ) ធ្វើ statement ខណៈពេល ( condition ) សម្រាប់ ( expr1 ; expr2 ; expr3 ) statement សម្រាប់សញ្ញា ( var in array ) បន្ត លុប អារេ [ index ] delete array exit [ expression ] { សេចក្តីថ្លែងការណ៍ }

I / O សេចក្តីថ្លែង

សេចក្តីថ្លែងការណ៍បញ្ចូលនិងលទ្ធផលមានដូចខាងក្រោម:

បិទ ( ឯកសារ [ , របៀប ] )

បិទឯកសារបំពង់ឬសហដំណើរការ។ ស្រេចចិត្ត ថាតើ គួរប្រើតែពេលបិទចុងបំពង់ពីរផ្លូវទៅសហដំណើរការ។ វាត្រូវតែជាតម្លៃខ្សែអក្សរ "ទៅ""ពី"

getline

កំណត់ $ 0 ពីកំណត់ត្រាបញ្ចូលបន្ទាប់ កំណត់ NF , NR , FNR

getline < ឯកសារ

កំណត់ $ 0 ពីកំណត់ត្រាបន្ទាប់នៃ ឯកសារ ; កំណត់ NF

getline var

កំណត់ var ពីកំណត់ត្រាបញ្ចូលបន្ទាប់ កំណត់ NR , FNR

getline var < file

កំណត់ var ពីឯកសារកំណត់ត្រាបន្ទាប់។

ពាក្យបញ្ជា | getline [ var ]

រត់ ពាក្យបញ្ជា បញ្ចូលលទ្ធផលទៅ $ 0var ដូចជាខាងលើ។

ពាក្យបញ្ជា & getline [ var ]

រត់ ពាក្យបញ្ជា ជាការរួមសហដំណើរការលទ្ធផលទៅ $ 0var ដូចជាខាងលើ។ ដំណើរការរួមគ្នាគឺជាផ្នែកបន្ថែមមួយ។

បន្ទាប់

បញ្ឈប់ដំណើរការទិន្នន័យបញ្ចូលបច្ចុប្បន្ន។ កំណត់ត្រាបញ្ចូលបន្ទាប់ត្រូវបានអាននិងដំណើរការចាប់ផ្តើមពីលំនាំដំបូងនៅក្នុងកម្មវិធី AWK ។ ប្រសិនបើការបញ្ចប់នៃទិន្នន័យបញ្ចូលត្រូវបានទៅដល់ប្លុក END (ប្រសិនបើមាន) ត្រូវបានប្រតិបត្តិ។

ឯកសារបន្ទាប់

បញ្ឈប់ដំណើរការឯកសារបញ្ចូលបច្ចុប្បន្ន។ កំណត់ត្រាបញ្ចូលបន្ទាប់ទៀតបានមកពីការបញ្ចូលឯកសារបញ្ចូលបន្ទាប់។ FILENAME និង ARGIND ត្រូវបានធ្វើបច្ចុប្បន្នភាពហើយ FNR ត្រូវបានកំណត់ឡើងវិញជាលេខ 1 និងដំណើរការចាប់ផ្តើមដោយលំនាំដំបូងនៅក្នុងកម្មវិធី AWK ។ ប្រសិនបើការបញ្ចប់នៃទិន្នន័យបញ្ចូលត្រូវបានទៅដល់ប្លុក END (ប្រសិនបើមាន) ត្រូវបានប្រតិបត្តិ។

បោះពុម្ព

បោះពុម្ពកំណត់ត្រាបច្ចុប្បន្ន។ កំណត់ត្រាលទ្ធផលត្រូវបានបញ្ចប់ដោយតម្លៃនៃអថេរ ORS

print expr-list

បោះពុម្ពកន្សោម។ កន្សោមនីមួយៗត្រូវបានបំបែកដោយតម្លៃនៃអថេរ OFS ។ កំណត់ត្រាលទ្ធផលត្រូវបានបញ្ចប់ដោយតម្លៃនៃអថេរ ORS

print expr-list > file

បោះពុម្ពកន្សោមលើ ឯកសារ ។ កន្សោមនីមួយៗត្រូវបានបំបែកដោយតម្លៃនៃអថេរ OFS ។ កំណត់ត្រាលទ្ធផលត្រូវបានបញ្ចប់ដោយតម្លៃនៃអថេរ ORS

printf fmt, expr-list

ធ្វើទ្រង់ទ្រាយនិងបោះពុម្ព។

printf fmt, expr-list > ឯកសារ

ធ្វើទ្រង់ទ្រាយនិងបោះពុម្ពលើ ឯកសារ

ប្រព័ន្ធ ( cmd បន្ទាត់ )

ប្រតិបត្តិពាក្យបញ្ជា cmd-line ហើយត្រឡប់ស្ថានភាពចេញ។ (នេះអាចមិនមាននៅលើប្រព័ន្ធដែលមិន POSIX ។ )

fflush ( [ file ] )

ជម្រះបណ្តោះអាសន្នណាមួយដែលទាក់ទងនឹងឯកសារបញ្ចេញឬ ឯកសារ បំពង់។ ប្រសិនបើបាត់ ឯកសារ ហើយនោះលទ្ធផលស្តង់ដារត្រូវបានលុបចោល។ ប្រសិនបើ ឯកសារ ជាខ្សែអក្សរទទេនោះឯកសារលទ្ធផលនិងបំពង់ដែលបើកទាំងអស់ត្រូវបានរាំងស្ទះ។

ការប្តូរទិសបន្ថែមត្រូវបានអនុញ្ញាតសម្រាប់ បោះពុម្ព និង printf

បោះពុម្ព ... >> ឯកសារ

បន្ថែមលទ្ធផលទៅ ឯកសារ

បោះពុម្ព ... | ពាក្យបញ្ជា

សរសេរនៅលើបំពង់មួយ។

បោះពុម្ព ... & ពាក្យបញ្ជា

ផ្ញើទិន្នន័យទៅសហដំណើរការ។

ពាក្យបញ្ជា getline ត្រឡប់ 0 នៅចុងឯកសារនិង -1 នៅលើកំហុសមួយ។ នៅពេលមានកំហុស ERRNO មានខ្សែអក្សរពិពណ៌នាអំពីបញ្ហា។

ចំណាំ: ប្រសិនបើប្រើបំពង់ឬសហដំណើរការដើម្បីទទួល បន្ទាត់ ឬពី printprintf នៅក្នុងរង្វិលជុំអ្នក ត្រូវ ប្រើ បិទ () ដើម្បីបង្កើតវត្ថុថ្មីនៃពាក្យបញ្ជា។ AWK មិនបិទបំពង់ឬដំណើរការរួមគ្នាដោយស្វ័យប្រវត្តិទេនៅពេលពួកគេត្រឡប់ EOF វិញ។

សេចក្តីថ្លែងការណ៍ printf

កំណែ AWK នៃសេចក្តីថ្លែងការណ៍ printf និង sprintf () (សូមមើលខាងក្រោម) ទទួលយកទ្រង់ទ្រាយការបំលែងជាក់លាក់ដូចខាងក្រោម:

% c

តួអក្សរ ASCII ។ បើអាគុយម៉ង់ដែលប្រើសម្រាប់ % c គឺលេខវាត្រូវបានចាត់ទុកជាតួអក្សរហើយត្រូវបានបោះពុម្ព។ បើមិនដូច្នោះទេអាគុយម៉ង់ត្រូវបានសន្មតថាជាខ្សែអក្សរហើយតួអក្សរទីមួយនៃខ្សែអក្សរនោះត្រូវបានបោះពុម្ព។

% d , % i

លេខគោលដប់ (ផ្នែកចំនួនគត់) ។

% e,% E

លេខចង្អុរនៃទំរង់ [-] d.dddddde [+ -] dd ។ ទ្រង់ទ្រាយ % E ប្រើ អ៊ី ជំនួសឱ្យ e

% f

លេខចង្អុរនៃទំរង់ [-] ddd.dddddd

% g,% G

ប្រើការបម្លែង % e% f , ណាដែលខ្លីជាង, ដោយលេខសូន្យដែលមិនសំខាន់ត្រូវបានបង្ក្រាប។ ទ្រង់ទ្រាយ % G ប្រើ % E ជំនួស % e

% o

លេខប្រាំបីដែលមិនបានចុះហត្ថលេខា (ក៏ជាចំនួនគត់) ។

% u លេខទសភាគមិនទាន់ចុះហត្ថលេខា (ជាថ្មីម្តងទៀតជាចំនួនគត់) ។

% s

ឃ្លាតួអក្សរ។

% x,% X

លេខលេខគោលដប់ប្រាំមួយមិនបានចុះហត្ថលេខា (ចំនួនគត់) ។ ទ្រង់ទ្រាយ % X ប្រើ ABCDEF ជំនួសឱ្យ abcdef

%%

តួអក្សរតែមួយ % អាគុយម៉ង់មិនត្រូវបានបម្លែងទេ។

ស្រេចចិត្តប៉ារ៉ាម៉ែត្របន្ថែមអាចស្ថិតនៅចន្លោះ % និងតួអក្សរបញ្ជា:

រាប់ $

ប្រើអាគុយម៉ង់ ចំនួន ' រាប់ នៅចំណុចនេះក្នុងទ្រង់ទ្រាយ។ នេះត្រូវបានគេហៅថាការ បញ្ជាក់ទីតាំង និងត្រូវបានបម្រុងទុកជាចម្បងសម្រាប់ប្រើនៅក្នុងកំណែបកប្រែនៃខ្សែអក្សរទ្រង់ទ្រាយមិនមែននៅក្នុងអត្ថបទដើមនៃកម្មវិធី AWK ទេ។ វាជាផ្នែកបន្ថែម gawk មួយ។

-

កន្សោមគួរតែត្រូវបានតម្រឹមសងខាងក្នុងវាលរបស់វា។

ចន្លោះ

សម្រាប់ការសន្ទនាជាលេខដាក់បុព្វបទតម្លៃអវិជ្ជមានជាមួយដកឃ្លានិងតម្លៃអវិជ្ជមានដោយសញ្ញាដក។

+

សញ្ញាបូកដែលត្រូវបានប្រើមុនពេលកែប្រែមេគុណ (មើលខាងក្រោម) និយាយថាតែងតែផ្ដល់សញ្ញាសម្រាប់ការសន្ទនាលេខទោះបីជាទិន្នន័យដែលត្រូវបានធ្វើទ្រង់ទ្រាយគឺវិជ្ជមានក៏ដោយ។ + បដិសេធការកែប្រែអវកាស។

#

ប្រើ `` គំរូជំនួស '`សម្រាប់អក្សរបញ្ជាខ្លះ។ សម្រាប់ % o , ផ្គត់ផ្គង់នាំមុខសូន្យ។ សម្រាប់ % x , និង % X , ផ្តល់ 0x0x ឈានមុខគេសម្រាប់លទ្ធផល nonzero ។ សម្រាប់ % e , % E , និង % f , លទ្ធផលតែងតែមានចំណុចទសភាគ។ សម្រាប់ % g , និង % G លេខសូន្យនៅពីក្រោយមិនត្រូវបានលុបចេញពីលទ្ធផលទេ។

0

លេខ 0 នាំមុខ (សូន្យ) ដើរតួជាទង់ជាតិមួយដែលបង្ហាញថាទិន្នផលគួរត្រូវបានបញ្ចូលដោយសូន្យជំនួសឱ្យចន្លោះ។ នេះអនុវត្តសូម្បីតែទ្រង់ទ្រាយលទ្ធផលដែលមិនមែនជាលេខ។ ទង់នេះមានប្រសិទ្ធិភាពនៅពេលដែលទទឹងវាលធំជាងតម្លៃដែលត្រូវបោះពុម្ព។

ទទឹង

ប្រអប់នេះគួរត្រូវបានបញ្ចូលទៅទទឹងនេះ។ ជាទូទៅវាលនេះត្រូវបានគ្របដោយចន្លោះ។ បើសិនជាទង់ 0 ត្រូវបានគេប្រើប្រាស់នោះវាត្រូវបានបញ្ចូលដោយលេខសូន្យ។

ច្បាស់លាស់

លេខដែលបញ្ជាក់ភាពត្រឹមត្រូវដែលត្រូវប្រើនៅពេលបោះពុម្ព។ សម្រាប់ទម្រង់ % e , % E និង % f វាបញ្ជាក់ចំនួនខ្ទង់ដែលអ្នកចង់បោះពុម្ពនៅខាងស្ដាំនៃចំណុចទសភាគ។ សម្រាប់ទ្រង់ទ្រាយ % g និង % G វាបញ្ជាក់លេខអតិបរមានៃតួលេខសំខាន់ៗ។ សម្រាប់ទ្រង់ទ្រាយ % d , % o , % i , % u , % x , និង % X វាបញ្ជាក់ចំនួនខ្ទង់អប្បបរមាដើម្បីបោះពុម្ព។ សម្រាប់ % s វាបញ្ជាក់ចំនួនអតិបរមានៃតួអក្សរពីខ្សែអក្សរដែលគួរតែត្រូវបានបោះពុម្ព។

ទទឹង ថាមវន្តនិងសមត្ថភាព ច្បាស់លាស់ នៃទម្រង់ការ ANSI C printf () ត្រូវបានគាំទ្រ។ A * ជំនួសនៃ ទទឹង ឬការបញ្ជាក់ច្បាស់លាស់បណ្តាលឱ្យតម្លៃរបស់វាត្រូវបានយកចេញពីបញ្ជីអាគុយម៉ង់ទៅ printfsprintf () ។ ដើម្បីប្រើការបញ្ជាក់ទីតាំងដែលមានទទឹងឬភាពច្បាស់លាស់ថាមវន្តផ្ដល់ ចំនួន $ បន្ទាប់ពី * ក្នុងខ្សែអក្សរទ្រង់ទ្រាយ។ ឧទាហរណ៍ "% 3 $ * 2 $ ។ * 1 $ s"

ឈ្មោះឯកសារពិសេស

នៅពេលធ្វើការបញ្ជូន I / O ពីការ បោះពុម្ពprintf ទៅជាឯកសារឬតាមរយៈការទទួល បន្ទាត់ ពីឯកសារ gawk ទទួលស្គាល់ឈ្មោះឯកសារពិសេសមួយចំនួននៅខាងក្នុង។ ឈ្មោះឯកសារទាំងនេះអនុញ្ញាតឱ្យចូលដំណើរការកម្មវិធីពិពណ៌នាឯកសារដែលបានមកពីតំណមេរបស់ gawk (ជាធម្មតាសែល) ។ ឈ្មោះឯកសារទាំងនេះក៏អាចត្រូវបានប្រើនៅលើបន្ទាត់ពាក្យបញ្ជាដើម្បីដាក់ឈ្មោះឯកសារទិន្នន័យ។ ឈ្មោះឯកសារគឺ:

/ dev / stdin

ការបញ្ចូលស្តង់ដារ។

/ dev / stdout

លទ្ធផលស្តង់ដារ។

/ dev / stderr

លទ្ធផលកំហុសស្តង់ដារ។

/ dev / fd / n

ឯកសារដែលភ្ជាប់ជាមួយកម្មវិធីពិពណ៌នាឯកសារបើក។

ទាំងនេះមានប្រយោជន៍ជាពិសេសសម្រាប់សារកំហុស។ ឧទាហរណ៍:

បោះពុម្ព "អ្នកបានវាយប្រហារវា!" > "/ dev / stderr"

ចំណែកឯអ្នកវិញអ្នកត្រូវប្រើ

បោះពុម្ព "អ្នកបានវាយប្រហារវា!" | "ឆ្មា 1> & 2"

ឈ្មោះឯកសារពិសេសដូចខាងក្រោមអាចត្រូវបានប្រើជាមួយ | & ប្រតិបត្តិករដំណើរការរួមសម្រាប់បង្កើតការតភ្ជាប់បណ្ដាញ TCP / IP ។

/ inet / tcp / lport / rhost / rport

ឯកសារសម្រាប់ការ តភ្ជាប់ TCP / IP នៅលើច្រកកំពង់ផែក្នុងស្រុកទៅ rhost ម៉ាស៊ីនពីចម្ងាយនៅលើ rport ច្រកពីចម្ងាយ។ ប្រើច្រក 0 ដើម្បីឱ្យប្រព័ន្ធជ្រើសយកច្រក។

/ inet / udp / lport / rhost / rport

ដូចគ្នាដែរប៉ុន្តែប្រើ UDP / IP ជំនួសឱ្យ TCP / IP ។

/ inet / raw / lport / rhost / rport

បានបម្រុងទុកសម្រាប់ការប្រើនាពេលអនាគត។

ឈ្មោះឯកសារពិសេសផ្សេងទៀតផ្តល់នូវការចូលដំណើរការព័ត៌មានអំពីដំណើរការ gawk កំពុងដំណើរការ។ ឈ្មោះឯកសារទាំងនេះឥឡូវលែងប្រើ។ ប្រើអារេ PROCINFO ដើម្បីទទួលព័ត៌មានដែលពួកគេផ្តល់ឱ្យ។ ឈ្មោះឯកសារគឺ:

/ dev / pid

ការអានឯកសារនេះត្រឡប់លេខដំណើរការនៃដំណើរការបច្ចុប្បន្នជាខ្ទង់ទសភាគដែលបានបញ្ចប់ដោយបន្ទាត់ថ្មី។

/ dev / ppid

ការអានឯកសារនេះត្រឡប់លេខសម្គាល់ដំណើរការមេនៃដំណើរការបច្ចុប្បន្នជាខ្ទង់ទសភាគដែលបានបញ្ចប់ដោយបន្ទាត់ថ្មី។

/ dev / pgrpid

អានឯកសារនេះត្រឡប់លេខសម្គាល់ដំណើរការក្រុមនៃដំណើរការបច្ចុប្បន្នជាខ្ទង់ទសភាគដែលបានបញ្ចប់ដោយបន្ទាត់ថ្មី។

/ dev / user

អានឯកសារនេះត្រលប់មកវិញនូវកំណត់ត្រាតែមួយដែលត្រូវបានបញ្ចប់ដោយបន្ទាត់ថ្មី។ វាលត្រូវបានបំបែកដោយដកឃ្លា។ $ 1 គឺជាតម្លៃនៃការហៅប្រព័ន្ធ getuid (2) $ 2 គឺជាតម្លៃនៃការហៅប្រព័ន្ធ geteuid (2) $ 3 គឺជាតម្លៃនៃការហៅប្រព័ន្ធ getgid (2) និង $ 4 គឺតម្លៃនៃ getegid (2) ការហៅប្រព័ន្ធ។ ប្រសិនបើមានវាលបន្ថែមទៀតនោះគឺជាលេខសម្គាល់ក្រុមដែលបានត្រឡប់ដោយក្រុម getgroups (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 ត្រូវបានតម្រៀបដោយប្រើក្បួនធម្មតារបស់ gawk សម្រាប់ប្រៀបធៀបតម្លៃនិងលិបិក្រមនៃតម្លៃដែលបានតម្រៀបរបស់ s ត្រូវបានជំនួសដោយចំនួនគត់ដែលចាប់ផ្ដើមដោយ 1 ។ ប្រសិនបើអារេទិសដៅអាស្រាល d ត្រូវបានបញ្ជាក់បន្ទាប់មក s ត្រូវបានចម្លងជាលើកដំបូងទៅ d ហើយបន្ទាប់មក d ត្រូវបានតម្រៀបដោយបន្សល់ទុកនូវលិបិក្រមនៃអារេប្រភពមិនផ្លាស់ប្តូរទេ។

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

ស្វែងរកខ្សែអក្សរគោលដៅសម្រាប់ការផ្គូផ្គងនៃកន្សោមធម្មតា r ។ បើ h ជាខ្សែអក្សរចាប់ផ្ដើមដោយ gG បន្ទាប់មកជំនួសការផ្គូផ្គងទាំងអស់នៃ r ជាមួយ s ។ បើមិនដូច្នោះទេ h គឺជាលេខដែលចង្អុលបង្ហាញថាការផ្គូផ្គង r ត្រូវជំនួស។ ប្រសិនបើមិនបានផ្តល់ទេ $ 0 ត្រូវបានប្រើជំនួសវិញ។ នៅក្នុងអត្ថបទជំនួសលេខលំដាប់ \ n ដែល n ជាលេខពី 1 ដល់ 9 អាចត្រូវបានប្រើដើម្បីចង្អុលបង្ហាញអត្ថបទដែលត្រូវគ្នានឹង subexpression គូសរង្វង់។ លំដាប់ \ 0 តំណាងឱ្យអត្ថបទដែលបានផ្គូផ្គងទាំងមូលដូចជាតួអក្សរ។ មិនដូច អនុ () និង gsub () ទេខ្សែអក្សរដែលបានកែប្រែត្រូវបានត្រឡប់ជាលទ្ធផលនៃអនុគមន៍ហើយខ្សែអក្សរគោលដៅដើម មិនត្រូវបាន ផ្លាស់ប្ដូរទេ។

gsub ( r , s [ , t ] )

សម្រាប់ខ្សែអក្សរនីមួយដែលផ្គូផ្គងកន្សោមធម្មតា r ក្នុងខ្សែអក្សរ t ជំនួសខ្សែអក្សរ s និងត្រឡប់ចំនួននៃការជំនួស។ ប្រសិនបើ មិន ត្រូវបានផ្គត់ផ្គង់សូមប្រើ $ 0 ។ អត្ថបទនៅក្នុងអត្ថបទជំនួសត្រូវបានជំនួសដោយអត្ថបទដែលត្រូវបានផ្គូផ្គងពិត។ ប្រើ \ & ដើម្បីទទួលបានព្យញ្ជនៈ។ (នេះត្រូវតែត្រូវបានវាយបញ្ចូលជា "\\" & # 160; មើល GAWK & # 160 ;: ការសរសេរកម្មវិធី AWK ដែលមានប្រសិទ្ធិភាព សម្រាប់ការពិភាក្សាពេញលេញនៃក្បួនសម្រាប់ ចង្កៀងសញ្ញាក្បៀស និងក្នុងអត្ថបទជំនួសនៃ អនុ ( gsub) និង gensub () ។ )

លិបិក្រម ( s , t )

ត្រឡប់លិបិក្រមនៃខ្សែអក្សរ t នៅក្នុងខ្សែអក្សរ s ឬ 0 ប្រសិនបើមិនមាន។ (នេះមានន័យថាតួអក្សរចាប់ផ្តើមពីលេខមួយ។ )

ប្រវែង ( [ s ] )

ត្រឡប់ប្រវែងនៃខ្សែអក្សរ s ឬប្រវែង $ 0 ប្រសិនបើមិនត្រូវបានផ្គត់ផ្គង់។

ការប្រកួត ( s , r [ , a ] )

ត្រឡប់ទីតាំងនៅក្នុង s ដែលកន្សោមធម្មតា r កើតឡើងឬ 0 ប្រសិនបើ r មិនមានវត្តមានហើយកំណត់តម្លៃ RSTART និង RLENGTH ។ ចំណាំថាលំដាប់អាគុយម៉ង់គឺដូចគ្នាសម្រាប់ ~ operator: str ~ re ។ ប្រសិនបើអារ៉េត្រូវបានផ្តល់, a ត្រូវបានសម្អាតហើយបន្ទាប់មកធាតុ 1 ដល់ n ត្រូវបានបំពេញដោយផ្នែកនៃ s ដែលត្រូវគ្នានឹង subexpression ដែលត្រូវគ្នានៅក្នុង r ។ ធាតុទី 1 នៃ a មានផ្នែកនៃ s ដែល ត្រូវគ្នាជាមួយនឹងកន្សោមធម្មតាទាំងមូល r

បំបែក ( s , a [ , r ] )

បំបែកខ្សែអក្សរ s ទៅក្នុងអារ៉េលើកន្សោមធម្មតា r និងត្រឡប់ចំនួនវាល។ ប្រសិនបើ r ត្រូវបានលុប FS ត្រូវបានប្រើជំនួសវិញ។ អារេអាត្រូវបានជម្រះមុន។ ការបែងចែកឥរិយាបថដូចគ្នាទៅនឹងការបំបែកវាលដែលបានពិពណ៌នាខាងលើ។

sprintf ( fmt , expr-list )

បោះពុម្ព expr បញ្ជី តាម fmt ហើយត្រឡប់ខ្សែអក្សរលទ្ធផល។

strtonum ( str )

ពិនិត្យ str ហើយត្រឡប់តម្លៃជាលេខរបស់វា។ ប្រសិនបើ str ចាប់ផ្តើមជាមួយនឹង 0 ដែល នាំមុខ strtonum () សន្មតថា str គឺជាចំនួនគោលប្រាំបី។ ប្រសិនបើ str ចាប់ផ្តើមជាមួយ 0x0X ដែល នាំមុខ strtonum () សន្មតថា str គឺជាលេខគោលដប់ប្រាំមួយ។

អនុ ( r , s [ , t ] )

ដូចជា gsub () ប៉ុន្តែមានតែ substring ផ្គូផ្គងដំបូងត្រូវបានជំនួស។

substr ( s , i [ , n ] )

ត្រឡប់តម្លៃខ្សែអក្សរ n ភាគច្រើនបំផុតនៃ s ដែល ចាប់ផ្តើមនៅ i ។ ប្រសិនបើ n ត្រូវបានលុបចោលអ្វីដែលនៅសល់ត្រូវបានប្រើ។

ធ្នើរ ( str )

ត្រឡប់ច្បាប់ចម្លងនៃ str string ដោយតួអក្សរអក្សរខ្ពស់ទាំងអស់ក្នុង str ត្រូវបាន បកប្រែទៅសមភាគីទាបដែលត្រូវគ្នា។ អក្សរមិនមែនអក្ខរក្រមមិនត្រូវបានផ្លាស់ប្តូរទេ។

ទំពក់ ( str )

ត្រឡប់ច្បាប់ចម្លងនៃខ្សែអក្សរ str ដោយតួអក្សរអក្សរទាបទាំងអស់ក្នុង str ត្រូវបាន បកប្រែទៅសមភាគីធំ ៗ ដែលត្រូវគ្នា។ អក្សរមិនមែនអក្ខរក្រមមិនត្រូវបានផ្លាស់ប្តូរទេ។

មុខងារពេលវេលា

ដោយសារការប្រើប្រាស់មួយក្នុងចំនោមការប្រើប្រាស់បឋមនៃកម្មវិធី AWK កំពុងដំណើរការឯកសារកំណត់ហេតុដែលមានពត៌មានត្រាពេលវេលា, gawk ផ្តល់មុខងារដូចខាងក្រោមដើម្បីទទួលបានតែមពេលវេលានិងការធ្វើទ្រង់ទ្រាយ។

mktime ( datepec )

Rurns datespec ជាត្រាពេលវេលានៃសំណុំបែបបទដូចដែលបានត្រឡប់ដោយ ប្រព័ន្ធ ()កាលបរិច្ឆេទ ត្រូវជាខ្សែអក្សរនៃទម្រង់ YYYY MM DD HH MM SS [DST] ។ មាតិកានៃខ្សែអក្សរគឺមានលេខប្រាំមួយឬប្រាំពីរដែលតំណាងឱ្យរៀងឆ្នាំពេញរាប់បញ្ចូលទាំងសតវត្សទី 1 ចាប់ពីទី 1 ដល់ទី 12 ថ្ងៃនៃខែចាប់ពីលេខ 1 ដល់ថ្ងៃទី 31 នៃម៉ោងពី 0 ទៅ 23 នាទីពី 0 ទៅ 59 និងទី 2 ពី 0 ទៅ 60 និងទង់ជាតិសន្សំស្រាល។ តម្លៃលេខទាំងនេះមិនចាំបាច់ស្ថិតនៅក្នុងជួរដែលបានបញ្ជាក់ទេ។ ឧទាហរណ៍ 1 ម៉ោង 1 មានន័យថា 1 ម៉ោងមុនពេលពាក់កណ្ដាល។ ប្រតិទិនហ្គ្រេហ្គោរីសដើមសូន្យត្រូវបានសន្មត់ដោយឆ្នាំ 0 ឆ្នាំមុនឆ្នាំទី 1 និងឆ្នាំ -1 ឆ្នាំមុន 0. ពេលវេលាត្រូវបានសន្មតថាស្ថិតនៅក្នុងតំបន់ពេលវេលាក្នុងតំបន់។ ប្រសិនបើទង់ជាតិរក្សាទុកពន្លឺថ្ងៃមានលក្ខណៈវិជ្ជមានពេលវេលាត្រូវបានសន្មតថាជាពេលវេលាសន្សំសំចៃពន្លឺថ្ងៃ។ ប្រសិនបើសូន្យពេលវេលាត្រូវបានសន្មតជាពេលវេលាស្តង់ដារ។ ហើយប្រសិនបើអវិជ្ជមាន (លំនាំដើម) mktime () ព្យាយាមកំណត់ថាតើម៉ោងរក្សាទុកពន្លឺថ្ងៃមានប្រសិទ្ធិភាពសម្រាប់រយៈពេលដែលបានបញ្ជាក់។ ប្រសិនបើ datepec មិនមានធាតុគ្រប់គ្រាន់ទេរឺពេលលទ្ធផលចេញពីជួរ mktime () ត្រឡប់ -1 ។

strftime ( [ format [ , timestamp ]] )

ធ្វើ តារាងពេលវេលា តាមការបញ្ជាក់តាម ទ្រង់ទ្រាយ។ ត្រាពេលវេលា គួរមានទម្រង់ដូចគ្នាដែលបានត្រឡប់ដោយ ប្រព័ន្ធ () ។ ប្រសិនបើ ត្រាពេលវេលា ត្រូវបានបាត់ម៉ោងពេលបច្ចុប្បន្នត្រូវបានប្រើ។ ប្រសិនបើបាត់ទ្រង់ទ្រាយទ្រង់ទ្រាយលំនាំដើមដែលស្មើទៅនឹងលទ្ធផលនៃ កាលបរិច្ឆេទ (1) ត្រូវបានប្រើ។ សូមមើលការបញ្ជាក់សម្រាប់តួនាទី strftime () នៅក្នុង ANSI C សម្រាប់ការបម្លែងទ្រង់ទ្រាយដែលត្រូវបានធានា។ កំណែដែនសាធារណៈមួយនៃ strftime (3) និងទំព័រ man សម្រាប់វាភ្ជាប់មកជាមួយ gawk ; ប្រសិនបើកំណែនោះត្រូវបានប្រើដើម្បីស្ថាបនា ហ្គូហ្គល នោះការសន្ទនាទាំងអស់ដែលបានពិពណ៌នានៅក្នុងទំព័របុរសនោះគឺអាចរកបាន

ប្រព័ន្ធ ()

ត្រឡប់ពេលវេលាបច្ចុប្បន្នជាចំនួនវិនាទីចាប់តាំងពី Epoch (1970-01-01 00:00:00 UTC លើប្រព័ន្ធ POSIX) ។

ប៊ីតដំណើរការអនុគមន៍

ចាប់ផ្តើមជាមួយកំណែកំណែ 3.1, មុខងាររៀបចំតួលេខដូចខាងក្រោមគឺអាចរកបាន។ ពួកវាធ្វើការដោយបម្លែងតម្លៃទសភាគទ្វេរដងទៅជាចំនួនគត់ វែងដែលមិនបានចុះហត្ថលេខា ធ្វើប្រតិបត្តិការនិងបម្លែងលទ្ធផលទៅចំណុចអណ្តែត។ មុខងារគឺ:

និង ( v1 , v2 )

ត្រឡប់ bitwise AND នៃតម្លៃដែលផ្តល់ដោយ v1 និង v2

compl ( val )

ត្រឡប់ការបំពេញបន្ថែមនៃ វ៉ុល

lshift ( val , count )

ត្រឡប់តម្លៃនៃតម្លៃដែលបានផ្លាស់ប្តូរដោយប៊ីត រាប់

ឬ ( v1 , v2 )

ត្រឡប់តម្លៃ bitwise OR នៃតម្លៃដែលផ្តល់ដោយ v1 និង v2

rshift ( val , count )

ត្រឡប់តម្លៃរបស់ val ដែលបានផ្លាស់ប្តូរដោយ រាប់ ប៊ីត។

xor ( v1 , v2 )

ត្រឡប់ XOR bitwise នៃតម្លៃដែលផ្តល់ដោយ v1 និង v2

អនុគមន៍អន្តរជាតិ

ចាប់ផ្តើមជាមួយនឹងកំណែ 3.1 កំណែ, អនុគមន៍ដូចខាងក្រោមអាចត្រូវបានប្រើពីក្នុងកម្មវិធី AWK របស់អ្នកសម្រាប់បកប្រែខ្សែអក្សរនៅពេលរត់។ សម្រាប់ព័ត៌មានលម្អិតសូមមើល GAWK: ការសរសេរកម្មវិធី AWK មានប្រសិទ្ធិភាព

bindtextdomain ( ថត [ ដែន ] )

បញ្ជាក់ថតដែល gawk រកមើលឯកសារ .mo ក្នុងករណីដែលវាមិនអាចឬមិនអាចដាក់ក្នុងទីតាំង `` ស្តង់ដារ '' (ឧ។ កំឡុងពេលធ្វើតេស្ត) ។ វាត្រឡប់ថតដែល ដែន គឺ `` ជាប់។ ''

ដែន លំនាំដើមគឺតម្លៃនៃ TEXTDOMAIN ។ ប្រសិនបើ ថត ជាខ្សែអក្សរទទេ ( "" ) នោះ bindtextdomain () ត្រឡប់ការចងបច្ចុប្បន្នសម្រាប់ ដែនដែលបាន ផ្តល់។

dcgettext ( ខ្សែអក្សរ [ ដែន [ , ប្រភេទ ]] )

ត្រឡប់ការបកប្រែនៃ ខ្សែអក្សរ ក្នុងដែនដែនអត្ថបទសម្រាប់ប្រភេទប្រភេទមូលដ្ឋាន។ តម្លៃលំនាំដើមសម្រាប់ ដែន គឺតម្លៃបច្ចុប្បន្ននៃ TEXTDOMAIN ។ តម្លៃលំនាំដើមសម្រាប់ ប្រភេទ គឺ "LC_MESSAGES"

ប្រសិនបើអ្នកផ្តល់តម្លៃសម្រាប់ ប្រភេទ វាត្រូវតែជាខ្សែអក្សរស្មើគ្នាមួយក្នុងចំណោមប្រភេទមូលដ្ឋានដែលបានពិពណ៌នានៅក្នុង GAWK: Programming AWK មានប្រសិទ្ធិភាព ។ អ្នកក៏ត្រូវផ្ដល់ដែនអត្ថបទផងដែរ។ ប្រើ TEXTDOMAIN ប្រសិនបើអ្នកចង់ប្រើដែនបច្ចុប្បន្ន។

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

ត្រឡប់សំណុំបែបបទពហុវចនៈដែលត្រូវបានប្រើសម្រាប់ ចំនួន ការបកប្រែនៃ string1 និង string2 នៅក្នុងដែនដែនអត្ថបទសម្រាប់ចំណាត់ថ្នាក់ប្រភេទមូលដ្ឋាន។ តម្លៃលំនាំដើមសម្រាប់ ដែន គឺតម្លៃបច្ចុប្បន្ននៃ TEXTDOMAIN ។ តម្លៃលំនាំដើមសម្រាប់ ប្រភេទ គឺ "LC_MESSAGES"

ប្រសិនបើអ្នកផ្តល់តម្លៃសម្រាប់ ប្រភេទ វាត្រូវតែជាខ្សែអក្សរស្មើគ្នាមួយក្នុងចំណោមប្រភេទមូលដ្ឋានដែលបានពិពណ៌នានៅក្នុង GAWK: Programming AWK មានប្រសិទ្ធិភាព ។ អ្នកក៏ត្រូវផ្ដល់ដែនអត្ថបទផងដែរ។ ប្រើ TEXTDOMAIN ប្រសិនបើអ្នកចង់ប្រើដែនបច្ចុប្បន្ន។

មុខងារដែលបានកំណត់ដោយអ្នកប្រើ

មុខងារនៅក្នុង AWK ត្រូវបានកំណត់ដូចខាងក្រោម:

ឈ្មោះ អនុគមន៍ ( បញ្ជីប៉ារ៉ាម៉ែត្រ ) { សេចក្តីថ្លែងការណ៍ }

អនុគមន៍ត្រូវបានប្រតិបត្តិនៅពេលដែលពួកគេត្រូវបានហៅពីកន្សោមក្នុងលំនាំឬសកម្មភាពណាមួយ។ ប៉ារ៉ាម៉ែត្រជាក់ស្តែងដែលបានផ្តល់នៅក្នុងការហៅអនុគមន៍ត្រូវបានប្រើដើម្បីបង្កើតប៉ារ៉ាម៉ែត្រផ្លូវការដែលបានប្រកាសនៅក្នុងអនុគមន៍។ អារេត្រូវបានឆ្លងកាត់ដោយសេចក្តីយោងអថេរផ្សេងទៀតត្រូវបានហុចដោយតម្លៃ។

ដោយសារតែមុខងារមិនមែនជាផ្នែកដំបូងនៃភាសា AWK នោះការផ្តល់អថេរក្នុងស្រុកគឺមិនសូវល្អឡើយ។ ពួកគេត្រូវបានគេប្រកាសថាជាប៉ារ៉ាម៉ែត្របន្ថែមនៅក្នុងបញ្ជីប៉ារ៉ាម៉ែត្រ។ អនុសញ្ញានេះគឺដើម្បីបំបែកអថេរមូលដ្ឋានពីប៉ារ៉ាម៉ែត្រពិតដោយដកឃ្លាបន្ថែមក្នុងបញ្ជីប៉ារ៉ាម៉ែត្រ។ ឧទាហរណ៍:

អនុគមន៍ f (p, q, a, b) # a និង b ជាមូលដ្ឋាន {... } / abc / {... ; f (1, 2); ... }

សញ្ញាវង់ក្រចកខាងឆ្វេងក្នុងការហៅអនុគមន៍មួយត្រូវបានទាមទារឱ្យធ្វើតាមឈ្មោះមុខងារភ្លាមៗដោយគ្មានចន្លោះពណ៌សអន្តរាគមន៍។ នេះគឺដើម្បីជៀសវាងភាពមិនច្បាស់លាស់ពាក្យសំងាត់ដែលមានសញ្ញាបូក។ ការដាក់កម្រិតនេះមិនអនុវត្តចំពោះមុខងារដែលបានបញ្ចូលក្នុងបញ្ជីខាងលើទេ។

មុខងារអាចហៅគ្នាទៅវិញទៅមកហើយអាចត្រូវបានហៅខ្លួនឯង។ ប៉ារ៉ាម៉ែត្រអនុគមន៍ត្រូវបានប្រើជាអថេរមូលដ្ឋានត្រូវបានចាប់ផ្ដើមទៅខ្សែអក្សរទទេនិងលេខសូន្យលើការហៅអនុគមន៍។

ប្រើ return expr ដើម្បីត្រឡប់តម្លៃពីអនុគមន៍មួយ។ តម្លៃត្រឡប់មិនត្រូវបានកំណត់បើគ្មានតម្លៃត្រូវបានផ្តល់ឬប្រសិនបើអនុគមន៍ត្រឡប់ដោយ `` ធ្លាក់ជ្រះ '' ។

ប្រសិនបើ - -lint ត្រូវបានផ្តល់ជូន, gawk ព្រមានអំពីការហៅទៅមុខងារមិនបានកំណត់នៅពេលញែក, ជំនួសឱ្យនៅពេលរត់។ ការហៅមុខងារមិនបានកំណត់នៅពេលរត់គឺជាកំហុសធ្ងន់ធ្ងរ។

ពាក្យ func អាចត្រូវបានប្រើជំនួស មុខងារ

បញ្ចូលមុខងារថ្មីដោយប្រុងប្រយ័ត្ន

ចាប់ផ្តើមជាមួយកំណែកំណែ 3.1, អ្នកអាចបន្ថែមមុខងារថាមវន្តថ្មីទៅអ្នកបកប្រែ ហ្គូល ។ ព័ត៌មានលម្អិតពេញលេញគឺហួសពីវិសាលភាពនៃទំព័រសៀវភៅដៃនេះ។ មើល GAWK: កម្មវិធី AWK មានប្រសិទ្ធិភាព សម្រាប់ព័ត៌មានលម្អិត។

ផ្នែកបន្ថែម ( វត្ថុ , មុខងារ )

ភ្ជាប់តំណឯកសារដែលបានចែករំលែកដោយឈ្មោះថាមវន្តដោយថាមវន្តហើយហៅ មុខងារ នៅក្នុងវត្ថុនោះដើម្បីអនុវត្តការចាប់ផ្តើម។ ទាំងនេះគួរតែត្រូវបានផ្តល់ជាខ្សែអក្សរ។ ត្រឡប់តម្លៃដែលបានត្រឡប់ដោយ អនុគមន៍

មុខងារនេះត្រូវបានផ្តល់ជូននិងចងក្រងជាឯកសារនៅក្នុង GAWK: Programming AWK ដ៏មានប្រសិទ្ធភាព ប៉ុន្តែអ្វីគ្រប់យ៉ាងអំពីលក្ខណៈពិសេសនេះទំនងជាផ្លាស់ប្តូរនៅក្នុងការចេញផ្សាយបន្ទាប់។ យើងសូមផ្តល់អនុសាសន៍យ៉ាងខ្លាំងថាអ្នកមិនប្រើលក្ខណៈពិសេសនេះសម្រាប់អ្វីដែលអ្នកមិនចង់ធ្វើវិញ។

SIGNALS

pgawk ទទួលសញ្ញាពីរ។ SIGUSR1 បណ្តាលឱ្យវាបោះបង់មុខងារទម្រង់និងមុខងារហៅទៅឯកសារទម្រង់ដែលទាំង awkprof.out ឬឯកសារដែលត្រូវបានដាក់ឈ្មោះដោយជម្រើស --profile ។ បន្ទាប់មកវាបន្តដំណើរការ។ SIGHUP បណ្តាលឱ្យវាបោះចោលទម្រង់និងមុខងារហៅជង់ហើយបន្ទាប់មកចាកចេញ។

ឧទាហរណ៍

បោះពុម្ពនិងតម្រៀបឈ្មោះចូលរបស់អ្នកប្រើទាំងអស់: BEGIN {FS = ":"} {print $ 1 | "តម្រៀប"} រាប់បន្ទាត់ក្នុងឯកសារ: {nlines ++} END {print nlines} មុន បន្ទាត់នីមួយៗតាមលេខរបស់វានៅក្នុងឯកសារ: {print FNR, $ 0} បន្តបន្ទាប់និងលេខបន្ទាត់ (បំរែបំរួលលើស្បែក): {print NR, $ 0}

ខាងក្នុង

អថេរខ្សែអក្សរគឺជាលំដាប់តួអក្សរដែលបានភ្ជាប់ជាមួយសញ្ញាសម្រង់ទ្វេ។ នៅក្នុងបរិស្ថានដែលមិននិយាយភាសាអង់គ្លេសវាអាចសម្គាល់ខ្សែអក្សរក្នុងកម្មវិធី AWK ដែលតម្រូវឱ្យមានការបកប្រែជាភាសាធម្មជាតិ។ ខ្សែអក្សរទាំងនេះត្រូវបានសម្គាល់នៅក្នុងកម្មវិធី AWK ដែលមានសញ្ញាគូសពីមុខ (`` _ '') ។ ឧទាហរណ៍,

gawk 'BEGIN {print "ជំរាបសួរពិភពលោក}}'

តែងតែបោះពុម្ព សួស្ដីពិភពលោក ។ ប៉ុន្តែ,

gawk 'BEGIN {print _ "ជំរាបសួរពិភពលោក}}'

អាចបោះពុម្ព bonjour, ពិភពលោក នៅបារាំង។

មានជំហានជាច្រើនដែលពាក់ព័ន្ធនឹងការផលិតនិងដំណើរការកម្មវិធី AWK ដែលអាចកំណត់ទីតាំងបាន។

1 ។

បន្ថែមសកម្មភាព BEGIN ដើម្បីកំណត់តម្លៃទៅអថេរ TEXTDOMAIN ដើម្បីកំណត់ដែនអត្ថបទទៅឈ្មោះដែលជាប់ទាក់ទងជាមួយកម្មវិធីរបស់អ្នក។


BEGIN {TEXTDOMAIN = "myprog"}

នេះអនុញ្ញាតឱ្យ gawk ដើម្បីរកឯកសារ .mo ដែលជាប់ទាក់ទងជាមួយកម្មវិធីរបស់អ្នក។ ដោយគ្មានជំហាននេះ, gawk ប្រើដែនអត្ថបទ សារ , ដែលទំនងជាមិនមានការបកប្រែសម្រាប់កម្មវិធីរបស់អ្នក។

2 ។

សម្គាល់ខ្សែអក្សរទាំងអស់ដែលគួរត្រូវបានបកប្រែដោយសញ្ញាផ្កាយនាំមុខ។

3 ។

បើចាំបាច់ប្រើមុខងារ dcgettext () និង / ឬ bindtextdomain () ក្នុងកម្មវិធីរបស់អ្នកបើសមស្រប។

4 ។

រត់ gawk - gen-po -f myprog.awk> myprog.po ដើម្បីបង្កើត ឯកសារ .po សម្រាប់កម្មវិធីរបស់អ្នក។

5 ។

ផ្តល់ការបកប្រែដែលសមស្របហើយស្ថាបនានិងដំឡើងឯកសារ .mo ដែលត្រូវគ្នា។

លក្ខណៈពិសេសនៃការធ្វើអន្ដរកម្មត្រូវបានពិពណ៌នាយ៉ាងលំអិតនៅក្នុង GAWK: Programming AWK មានប្រសិទ្ធិភាព

Posix Compatibility

គោលដៅចម្បងសម្រាប់ gawk គឺភាពឆបគ្នាជាមួយនឹងស្តង់ដារ POSIX ក៏ដូចជាជាមួយកំណែចុងក្រោយបំផុតនៃ awk UNIX ។ ដើម្បីបញ្ចប់នេះ, gawk រួមបញ្ចូលលក្ខណៈពិសេសដែលអាចមើលឃើញរបស់អ្នកប្រើខាងក្រោមដែលមិនត្រូវបានពិពណ៌នានៅក្នុងសៀវភៅ AWK ប៉ុន្តែជាផ្នែកមួយនៃកំណែ Bell Laboratories awk ហើយស្ថិតនៅក្នុងស្តង់ដា POSIX ។

សៀវភៅនេះបង្ហាញថាការកំណត់អថេរបន្ទាត់ពាក្យបញ្ជាកើតឡើងនៅពេលដែល awk នឹងបើកអាគុយម៉ង់ជាឯកសារមួយដែលបន្ទាប់ពីប្លុក ប៊ូលីន ត្រូវបានប្រតិបត្តិ។ ទោះជាយ៉ាងណាក៏ដោយនៅក្នុងការអនុវត្តមុននៅពេលការចរចារបែបនេះបង្ហាញខ្លួនមុនឈ្មោះឯកសារណាមួយកិច្ចការនឹងកើតឡើង មុន ប្លុក ប៊ិក ត្រូវបានដំណើរការ។ កម្មវិធីបានពឹងផ្អែកលើលក្ខណៈពិសេសនេះ។ '' នៅពេលដែលត្រូវបានផ្លាស់ប្តូរដើម្បីផ្គូផ្គងឯកសាររបស់វាជម្រើស -v សម្រាប់កំណត់អថេរមុនប្រតិបត្តិកម្មវិធីត្រូវបានបន្ថែមដើម្បីបំពេញកម្មវិធីដែលអាស្រ័យលើឥរិយាបថចាស់។ (លក្ខណៈពិសេសនេះត្រូវបានព្រមព្រៀងគ្នាដោយមន្ទីរពិសោធន៍ Bell និងអ្នកអភិវឌ្ឍន៍ GNU ។ )

ជំរើស -W សម្រាប់ការអនុវត្តជាក់ស្តែងគឺមកពីស្តង់ដា POSIX ។

ពេលកំពុងដំណើរការអាគុយម៉ង់ gawk ប្រើជម្រើសពិសេស `` - '' ដើម្បីផ្តល់សញ្ញាចុងបញ្ចប់នៃអាគុយម៉ង់។ នៅក្នុងរបៀបដែលឆបគ្នាវាព្រមានអំពីប៉ុន្តែបើមិនអើពើនឹងជម្រើសមិនត្រូវបានកំណត់។ នៅក្នុងប្រតិបត្តិការធម្មតាអាគុយម៉ង់បែបនេះត្រូវបានបញ្ជូនទៅកម្មវិធី AWK ដើម្បីដំណើរការ។

សៀវភៅ AWK មិនកំណត់តម្លៃត្រឡប់នៃ srand () ទេ។ ស្ដង់ដារ POSIX មានវាត្រឡប់គ្រាប់ពូជដែលវាត្រូវបានគេប្រើដើម្បីអនុញ្ញាតឱ្យមានការតាមដានលំដាប់លេខចៃដន្យ។ ដូច្នេះ srand () ក្នុង gawk ក៏ត្រឡប់ពូជបច្ចុប្បន្នរបស់វា។

លក្ខណៈពិសេសថ្មីផ្សេងទៀតគឺ: ការប្រើប្រាស់ជម្រើសច្រើន -f (ពី MKS awk ); អារេ ENVIRON ; \ a , និង \\ v រត់គេចខ្លួន (ធ្វើរួចជាស្រេចហើយចាប់ផ្តើមត្រលប់ទៅរកកំណែ Bell Laboratories) ។ (tolower () និង toupper () បាន សាងសង់នៅក្នុងមុខងារ (ពីកំណែមន្ទីរពិសោធន៍ ឡាស៊ែរ ); និងលក្ខខណ្ឌបម្លែង ANSI C នៅក្នុង printf (បានធ្វើឡើងជាលើកដំបូងនៅក្នុងកំណែមន្ទីរពិសោធន៍កណ្ដឹង) ។

លក្ខណៈពិសេសប្រវត្តិសាស្ត្រ

មានលក្ខណៈពិសេសពីរនៃការអនុវត្ត AWK ប្រវត្តិសាស្ត្រដែលគាំទ្រ។ ដំបូងវាអាចហៅ ប្រវែង () មុខងារដែលបានសាងសង់ក្នុងមិនត្រឹមតែគ្មានអាគុយម៉ង់ទេប៉ុន្តែសូម្បីតែគ្មានវង់ក្រចក! ដូច្នេះ,

a = ប្រវែង # Algol បរិសុទ្ធ 60, Batman!

គឺដូចគ្នានឹង

a = ប្រវែង ()
a = ប្រវែង ($ 0)

លក្ខណពិសេសនេះត្រូវបានសម្គាល់ជា `` បានបដិសេធនៅក្នុងស្តង់ដារ POSIX ហើយ '' gawk ចេញការព្រមានអំពីការប្រើប្រាស់របស់វាបើ --lint ត្រូវបានបញ្ជាក់លើបន្ទាត់ពាក្យបញ្ជា។

លក្ខណៈពិសេសផ្សេងទៀតគឺការប្រើទាំងសេចក្តីថ្លែងការ បន្តបំបែក នៅខាងក្រៅតួនៃ ខណៈពេល សម្រាប់ធ្វើ រង្វិលជុំ។ ការអនុវត្តតាមប្រពៃណី AWK បានចាត់ទុកការប្រើបែបនេះស្មើទៅនឹងសេចក្តីថ្លែង បន្ទាប់Gawk គាំទ្រការប្រើនេះប្រសិនបើ - - ត្រូវបានបញ្ជាក់។

ផ្នែកបន្ថែម GNU

Gawk មានផ្នែកបន្ថែមមួយចំនួនដល់ POSIX POSK ។ ពួកគេត្រូវបានពិពណ៌នានៅក្នុងផ្នែកនេះ។ ផ្នែកបន្ថែមទាំងអស់ដែលបានពិពណ៌នានៅទីនេះអាចត្រូវបានបិទដោយការហៅហ្គោលដោយមានជម្រើស --traditional

លក្ខណៈពិសេសដូចខាងក្រោមនៃ gawk គឺមិនអាចរកបាននៅ awk POSIX ។

*

គ្មានការស្វែងរកផ្លូវត្រូវបានអនុវត្តចំពោះឯកសារដែលមានឈ្មោះតាម -f នោះ ទេ។ ដូច្នេះអថេរបរិស្ថាន AWKPATH មិនពិសេសទេ។

*

លំដាប់ \ x escape ។ (ត្រូវបានបិទដោយ --posix ។ )

*

អនុគមន៍ fflush () ។ (ត្រូវបានបិទដោយ --posix ។ )

*

សមត្ថភាពក្នុងការបន្តបន្ទាត់បន្ទាប់ពី ? និង : ។ (ត្រូវបានបិទដោយ --posix ។ )

*

ថេរនិងគោលដប់ប្រាំបីនៅក្នុងកម្មវិធី AWK ។

*

អថេរ ARGIND , BINMODE , ERRNO , LINT , RT និង TEXTDOMAIN មិនពិសេសទេ។

*

អថេរ IGNORECASE និងផលប៉ះពាល់របស់វាមិនមានទេ។

*

អថេរ FIELDWIDTHS និងការបំបែកវាលទទឹងថេរ។

*

អារេ PROCINFO មិនមានទេ។

*

ការប្រើប្រាស់ RS ជាកន្សោមធម្មតា។

*

ឈ្មោះឯកសារពិសេសដែលអាចរកបានសម្រាប់ការប្តូរ I / O មិនត្រូវបានទទួលស្គាល់ទេ។

*

ប្រតិបត្តិករសម្រាប់បង្កើតដំណើរការរួម។

*

សមត្ថភាពបំបែកចេញតួអក្សរនីមួយៗដោយប្រើខ្សែអក្សរទទេជាតម្លៃរបស់ FS និងជាអាគុយម៉ង់ទីបីដើម្បី បំបែក ()

*

អាគុយម៉ង់ទីពីរស្រេចទៅលើមុខងារ បិទ ()

*

អាគុយម៉ង់ទីបីស្រេចទៅនឹងមុខងារ () ()

*

សមត្ថភាពប្រើប្រាស់ វិមាត្រ ទីតាំងជាមួយ printf និង sprintf ()

*

ការប្រើ អារេ លុប ដើម្បីលុបមាតិកាទាំងមូលនៃអារេមួយ។

*

ការប្រើនៃ ឯកសារបន្ទាប់ ដើម្បីបោះបង់ដំណើរការនៃឯកសារបញ្ចូលបច្ចុប្បន្ន។

*

និង () , asort () , bindtextdomain () , compl () , dcgettext () , gensub () , lshift () , mktime () ឬ () rshift () , strftime () , strtonum () , systime () និង xor ()

*

ខ្សែអក្សរអាចធ្វើមូលដ្ឋានីយកម្មបាន។

*

បន្ថែមអនុគមន៍ដែលភ្ជាប់មកជាថ្មីជាមួយមុខងារ បន្ថែម ()

សៀវភៅ AWK មិនកំណត់តម្លៃត្រឡប់នៃមុខងារ close () ទេ។ ការ បិទ Gawk () ត្រឡប់តម្លៃពី fclose (3) ឬ pclose (3) នៅពេលបិទឯកសារលទ្ធផលឬបំពង់រៀងគ្នា។ វាត្រឡប់ស្ថានភាពចាកចេញរបស់ដំណើរការនៅពេលបិទបំពង់បញ្ចូល។ តម្លៃត្រឡប់គឺ -1 ប្រសិនបើឈ្មោះឯកសារបំពង់ឬសហដំណើរការមិនត្រូវបានបើកជាមួយការប្ដូរទិស។

នៅពេល gawk ត្រូវបានហៅដោយជម្រើស --traditional ប្រសិនបើ fs អាគុយម៉ង់ទៅ -F គឺជាជម្រើស `` t '' នោះ FS ត្រូវបានកំណត់ទៅតួអក្សរ tab ។ ចំណាំថាការវាយ gawk -F \ t ... គ្រាន់តែបណ្តាលឱ្យសែលដកស្រង់ `` t '' និងមិនឆ្លងកាត់ `` \ t '' ទៅជម្រើស -F ទេ។ ដោយសារនេះជាករណីពិសេសដែលមិនស្អាតវាមិនមែនជាឥរិយាបថលំនាំដើមទេ។ ឥរិយាបថនេះក៏មិនកើតឡើងផងដែរប្រសិនបើ --posix ត្រូវបានបញ្ជាក់។ ដើម្បីពិតជាទទួលបានតួអក្សរថេបជាអ្នកបំបែកវាលវាជាការល្អបំផុតដែលប្រើសម្រង់ទោល: gawk -F '\ t' ...

មើលពាក្យបញ្ជាផ្សេងទៀត : រង់ចាំ , lp , ពេញលេញ , exec , getfacl , ioctl , uniq , rmmod , pvcreate , rsh , unix2dos , cal , fs , cd , iwpriv , swapon , autofs , និយាយ , motd , ឥតគិតថ្លៃ , lpr , execl , fdisk , នៅ , who , iwconfig , ifconfig , vgdisplay , បើក , lsmod , ntohs , mailq , សំលាប់ , wtmp