Իմացեք Linux հրամանատարին - gawk

Անուն

gawk - նմուշ սկան եւ մշակման լեզու

Սինոփսիս

gawk [POSIX կամ GNU ոճի ընտրանքներ] -f ծրագրի ֆայլ [ - ] ֆայլ ...
gawk [POSIX կամ GNU ոճի ընտրանքներ] [ - ] ծրագրի տեքստային ֆայլ ...

pgawk [POSIX կամ GNU ոճի ընտրանքներ] -f ծրագրի ֆայլ [ - ] ֆայլ ...
pgawk [POSIX կամ GNU ոճի ընտրանքներ] [ - ] ծրագրի տեքստային ֆայլ ...

Նկարագրություն

Gawk- ը AWK- ի ծրագրավորման լեզվի GNU ծրագրի իրականացումն է: Այն համապատասխանում է POSIX 1003.2 հրամանի լեզուների եւ Կոմունալների ստանդարտի լեզուի սահմանմանը: Այս տարբերակը իր հերթին հիմնված է AWK ծրագրավորման լեզվով նկարագրության վրա, Aho- ի, Kernighan- ի եւ Weinberger- ի կողմից, UNIX awk- ի System V Release 4 տարբերակի հավելյալ առանձնահատկություններով: Gawk- ը նաեւ տրամադրում է ավելի շատ Bell Laboratory- ի awk ընդարձակման եւ մի շարք GNU- ի հատուկ ընդարձակումներ:

Pgawk- ը gawk- ի պրոֆիլային տարբերակն է: Այն նույնական է ամեն տեսակի gawk , բացառությամբ, որ ծրագրերը ավելի դանդաղ են, եւ դա ինքնաբերաբար արտադրում է կատարման պրոֆիլը awkprof.out ֆայլի կատարման ժամանակ: Ստորեւ ներկայացված ` պրոֆիլի տարբերակը, ստորեւ:

Հրամանի տողը բաղկացած է ինքնուրույն ընտրելու տարբերակներից, AWK ծրագրի տեքստի (եթե չօգտագործված -f կամ - ֆայլի ընտրանքների միջոցով) եւ ARGC- ի եւ ARGV- ի նախապես սահմանված AWK փոփոխականներում առկա արժեքները:

Ընտրանքի ձեւաչափը

Gawk- ի ընտրանքները կարող են լինել ավանդական POSIX մեկ նամական տարբերակ կամ GNU ոճով երկար ընտրանքներ: POSIX- ի տարբերակները սկսվում են մեկ `` `` `երկար տարբերակները սկսվում են` `` `: Երկար ընտրանքները նախատեսված են GNU- ի առանձնահատկությունների եւ POSIX- մանդատի համար:

POSIX- ի ստանդարտից հետո, gawk-specific options- ը տրվում է փաստարկների միջոցով -W տարբերակը: Բազմաֆունկցիոնալ տարբերակները կարող են տրամադրվել յուրաքանչյուր -W տարբերակը ունի համապատասխան երկար տարբերակ, ինչպես մանրամասն նկարագրված է ստորեւ: Երկար ընտրանքների վերաբերյալ փաստարկները կամ միացված են տարբերակով ` = նշանով, առանց միջամտությունների, կամ դրանք կարող են տրամադրվել հաջորդ հրամանի տողում: Երկար ընտրանքները կարող են կրճատվել, քանի դեռ հապավումը մնացել է յուրահատուկ:

Ընտրանքներ

Gawk- ը ընդունում է հետեւյալ տարբերակները, այբբենական կարգով:

-F fs

- Ֆայլի տարբերակիչ fs Օգտագործեք fs մուտքագրման դաշտի անջատողի համար ( FS- ի կանխորոշված ​​փոփոխականի արժեքը):

-v var = val

- նշանակեք var = val Նշեք արժեքի արժեքը փոփոխականին, մինչեւ ծրագրի մեկնարկը: Նման փոփոխական արժեքները հասանելի են AWK ծրագրի BEGIN բլոկի վրա:

ծրագրային ֆայլ

- ֆայլի ծրագիր-ֆայլը Read AWK ծրագրի աղբյուրը ֆայլի ծրագրային ֆայլից , փոխարենը առաջին հրամանի տողային փաստարկից: Հնարավոր է օգտագործել բազմակի (կամ ֆայլային ) տարբերակներ:

-mf NNN

-mr NNN Սահմանել տարբեր հիշողության սահմանները NNN արժեքի նկատմամբ: F դրոշը սահմանում է դաշտերի առավելագույն քանակը, իսկ դրոշը սահմանում է առավելագույն ռեկորդային չափը: Այս երկու դրոշները եւ -m տարբերակը Բելլ Լաբորատորիայից UNIX awk- ի հետազոտական ​​տարբերակն են: Նրանք անտեսվում են gawk- ի կողմից , քանի որ gawk- ը չունի նախապես սահմանված սահմաններ:

- ավանդական

--compat

- Համատեղելիության ռեժիմում ավանդական : Համատեղելիության ռեժիմում, gawk- ը նույնականացնում է UNIX awk- ին ; GNU- ի հատուկ ընդարձակման ոչ մեկը չի ճանաչվում: Օգտագործումը - սովորաբար նախընտրելի է այս տարբերակի մյուս ձեւերի նկատմամբ: Տես, GNU EXTENSIONS- ը , ստորեւ, լրացուցիչ տեղեկությունների համար:

-Վ կրկնօրինակեք

-Հեղինակային իրավունքի պաշտպանություն

- պատճենը

- Պատկերագիր GNU հեղինակային իրավունքի մասին տեղեկատվության հաղորդագրության կարճ տարբերակը տպեք ստանդարտ արտադրանքի վրա եւ հաջողությամբ ելեք :

-W աղբարկղի փոփոխականներ [ = ֆայլ ]

- dump- փոփոխականներ [ = file ] Տպեք համընդհանուր փոփոխականների տեսակավորված ցուցակ, դրանց տեսակները եւ վերջնական արժեքները ֆայլի մեջ : Եթե ​​որեւէ ֆայլ չի տրամադրվում, ապա gawk- ը օգտագործում է awkvars.out ֆայլը ընթացիկ գրացուցակում:

Բոլոր գլոբալ փոփոխականների ցուցակը ունենալը լավ միջոց է ձեր ծրագրերում տպագրական սխալների որոնման համար: Դուք նաեւ կօգտագործեք այս տարբերակը, եթե ունեք մեծ գործառույթ ունեցող մեծ ծրագիր, եւ դուք ցանկանում եք վստահ լինել, որ ձեր գործառույթները անտեղիորեն չեն օգտագործում գլոբալ փոփոխականներ, որոնք նշանակում են տեղական լինել: (Սա հատկապես հեշտ սխալ է, պարզ փոփոխական անուններով, ինչպես i , j , եւ այլն):

-Եւ օգնությունը

-W օգտագործումը

--Օգնություն

- Տպեք Ստանդարտ արտադրանքի վրա առկա ընտրանքների համեմատաբար կարճ ամփոփում: ( GNU կոդավորման ստանդարտների համաձայն , այդ ընտրանքները հանգեցնում են անմիջական, հաջող ելքի):

-Վա լինտ [ = ճակատագիր ]

- lint [ = fatal ] Ապահովել նախազգուշացում կառուցվածքի վերաբերյալ, որոնք կասկածելի կամ ոչ դյուրակիր են այլ CRM իրականացման համար: Ճակատագրական լիցքավորված նախազգուշացումների բացառիկ փաստարկով կդառնան ճակատագրական սխալներ: Սա կարող է լինել կտրուկ, բայց դրա օգտագործումը, անշուշտ, կխրախուսի մաքուր AWK ծրագրերի մշակումը:

-Երբ

- lint-old Ապահովել նախազգուշացում կառուցվածքների մասին, որոնք չեն շարժվում Unix awk- ի սկզբնական տարբերակին:

-W gen-po

- գույնը փնտրել եւ վերլուծել AWK- ի ծրագիրը եւ առաջացնել GNU .po ֆորմատի ֆայլը, ստանդարտ արտադրանքի վրա, ծրագրում ներառված բոլոր տեղայնացված տողերի գրառումների համար: Ծրագիրը ինքնին չի իրականացվում: Տես, GNU Gettext բաշխումը մասին .po ֆայլերի մասին:

- Ոչ տասնորդական տասներորդ տվյալները

- տասներորդ-տասնորդական տվյալներ Տվյալների մուտքագրում ստացված ութնկալ եւ տասնութերորդ արժեքները: Օգտագործեք այս տարբերակը մեծ զգուշությամբ:

-Վա պոսիկս

--posix Սա փոխում է համատեղելիության ռեժիմը, հետեւյալ լրացուցիչ սահմանափակումներով.

*

\ x փախուստի հաջորդականությունը չի ճանաչվում:

*

Միայն տիեզերքը եւ ներդիրը հանդես են գալիս որպես դաշտային առանձնացնողներ, երբ FS- ը սահմանվում է մեկ տարածք, նոր տող չկա:

*

Դուք չեք կարող շարունակել գծերը : եւ :

*

Հիմնական բառի գործառույթի համար հոմանիշ գործառույթը չի ճանաչվում:

*

Օպերատորները ** եւ ** = չեն կարող օգտագործվել ^ եւ ^ = տեղերում:

*

Fflush () ֆունկցիան հասանելի չէ:

-Վտնաբերած պրոֆիլ [ = prof_file ]

--profile [ = prof_file ] Send profiling data to prof_file : Սխալը awkprof.out է : Երբ վազում է gawk , պրոֆիլը պարզապես ծրագիրն է `« գեղեցիկ տպագիր »տարբերակը: Երբ վազում է pgawk- ով , պրոֆիլը պարունակում է ծրագրի յուրաքանչյուր հայտարարության կատարման ակնկալում, ձախ եզրագծում եւ գործառնական զանգի հաշվարկը, օգտագործողի կողմից սահմանված յուրաքանչյուր գործառույթի համար:

-Երկրորդ ընդմիջում

- միջանկյալ ընդմիջում Պարզ արտահայտության համապատասխանության մեջ ընդգրկել միջանկյալ արտահայտությունների օգտագործումը (տես Ստորին արտահայտություններ , ստորեւ): Միջանկյալ արտահայտություններն ավանդաբար հասանելի չեն AWK լեզվով: POSIX- ի ստանդարտը նրանց ավելացրեց, որ միմյանց հետ համահունչ եւ վարժեցրեց : Այնուամենայնիվ, դրանց օգտագործումը, ամենայն հավանականությամբ, կխախտի Հին AWK- ի ծրագրերը, այնպես որ դրանք միայն տրամադրում են դրանք, եթե դրանք պահանջվում են այս տարբերակի հետ, կամ երբ - posix- ը նշված է:

- Աղբյուրի ծրագրի տեքստը

- ծրագրի ծրագրային տեքստը Օգտագործեք ծրագրային տեքստը որպես AWK ծրագրի կոդով: Այս տարբերակը հնարավորություն է ընձեռում գրադարանային գործառույթների հեշտ օգտագործումը (օգտագործվող -f եւ ֆայլի ընտրանքների միջոցով) հրամանի տողում մուտքագրված կոդով: Այն նախատեսված է հիմնականում միջին եւ մեծ AWK ծրագրերի համար, որոնք օգտագործվում են վահանակների վրա:

-W տարբերակը

- տարբերակեք տպագիր տարբերակի մասին տեղեկատվությունը ստանդարտ արտադրանքի վրա այս gawk- ի հատուկ օրինակի համար: Սա օգտակար է հիմնականում իմանալու համար, թե արդյոք ձեր համակարգչում գործող gawk- ի օրինակը արդիական է, անկախ այն բանից, թե Ազատ ծրագրային ապահովման հիմնադրամը բաշխում է: Սա նաեւ օգտակար է, երբ հայտնաբերված սխալները: ( GNU կոդավորման ստանդարտների համաձայն , այդ ընտրանքները հանգեցնում են անմիջական, հաջող ելքի):

- ազդանշանների վերջի ազդանշան: Սա օգտակար է, որպեսզի AWK ծրագրի հետագա փաստարկները սկսվեն `« - »: Սա հիմնականում համապատասխանում է բազմաթիվ այլ POSIX ծրագրերի կողմից օգտագործվող կոնվենցիայի վերլուծության փաստարկին:

Համատեղելիության ռեժիմում ցանկացած այլ ընտրանք անվավեր է, սակայն այլ կերպ անտեսվում է: Նորմալ շահագործման ընթացքում, քանի դեռ ծրագրային տեքստը տրամադրվել է, անճանաչելի տարբերակներ են փոխանցվում ARGV զանգվածում AWK ծրագրի մշակման համար: Սա հատկապես օգտակար է «AWK» ծրագրերի իրականացման համար `« #! »Գործառնական թարգմանչի մեխանիզմով:

AWK PROGRAM EXECUTION

AWK ծրագիրը բաղկացած է օրինակելի գործողությունների հայտարարագրերից եւ ընտրովի ֆունկցիայի սահմանումների հաջորդականությունից:

օրինակի գործողություն

ֆունկցիայի անունը ( պարամետրերի ցանկ ) { statements }

Gawk- ը նախեւառաջ կարդում է ծրագրի աղբյուրը, եթե նշված է ֆայլի ֆայլերից (ֆայլերից ), փաստարկներից մինչեւ «աղբյուր» կամ հրամանի տողում առաջին ոչ տարբերակն արգումենտից: The -f եւ ssource ընտրանքները կարող են օգտագործվել հրամանի տողում բազմակի անգամ: Gawk- ը ընթերցում է ծրագրի տեքստը, կարծես թե բոլոր ծրագրային ֆայլերը եւ հրամանատարական գծի տեքստերը համակցվել են միասին: Սա օգտակար է AWK- ի գործառույթների գրադարանների ստեղծման համար, առանց դրանք ներգրավելով դրանք օգտագործող յուրաքանչյուր նոր AWK ծրագրի մեջ: Այն նաեւ հնարավորություն է ընձեռում գրադարանային գործառույթները հրամանի տող ծրագրերով խառնել:

AWKPATH- ի շրջակա միջավայրի փոփոխականությունը սահմանում է -f տարբերակի անվանման աղբյուր ֆայլերը գտնելու համար օգտագործման որոնման ուղին: Եթե ​​այս փոփոխականը գոյություն չունի, ապա նախնական ճանապարհը «.: / Usr / local / share / awk» : (Իրական գրացուցակը կարող է տարբեր լինել, կախված նրանից, թե ինչպես է կառուցվել եւ տեղադրվել gawk ): Եթե ֆայլի անունը տրվում է -f տարբերակի պարունակող `` / '`բնույթ, ճանապարհ չկա:

Gawk- ը AWK- ի ծրագրերն իրականացնում է հետեւյալ կարգով: Նախ, կատարվում են -v տարբերակով նշված բոլոր փոփոխական հանձնարարությունները: Հաջորդը, gawk ծրագիրը կազմում է ներքին ձեւ: Այնուհետեւ, gawk- ը կատարում է BEGIN- ի բլոկի (ներ) ի կոդերը (եթե առկա է), ապա ընթերցում է ARGV զանգվածում նշված յուրաքանչյուր ֆայլը: Եթե ​​հրամանի տողում նշված ֆայլեր չկան, gawk- ը կարդում է ստանդարտ մուտքագրումը:

Եթե ​​հրամանի տողում գտնվող ֆայլը ունի var = val ձեւ, ապա այն վերաբերվում է որպես փոփոխական նշանակում: Variable var- ն կստանա արժեքի արժեք: (Դա տեղի է ունենում ցանկացած BEGIN- ի բլոկի (ների) գործարկումից հետո): Command line variable assignment- ը առավել օգտակար է դինամիկ նշանակման արժեքների համար, AWK- ն օգտագործում է վերահսկել, թե ինչպես մուտքագրված է դաշտերը եւ գրառումները: Այն նաեւ օգտակար է վերահսկելու պետությունը, եթե մի քանի անցումներ են պահանջվում մեկ տվյալների տվյալների վրա:

Եթե ARGV- ի որոշակի տարրի արժեքը դատարկ է ( "" ), ապա gawk- ը անցնում է դրա վրա:

Ներածման յուրաքանչյուր ռեկորդի համար Gawk թեստերը կտեսնեն, թե արդյոք այն համապատասխանում է AWK ծրագրի ցանկացած օրինակին : Յուրաքանչյուր տիպի համար, որը համապատասխանում է գրառմանը, համապատասխան գործողություն է կատարվում: Նախագծերը փորձարկվում են ծրագրում տեղի ունեցած կարգի մեջ:

Վերջապես, բոլոր մուտքերը սպառվելուց հետո, gawk- ը կատարում է END բլոկի (ներ) բջջային կոդը (եթե առկա է):

Փոփոխականներ, գրառումներ եւ դաշտեր

AWK փոփոխականները դինամիկ են. նրանք գոյություն ունեն, երբ դրանք առաջին անգամ օգտագործվում են: Նրանց արժեքները կամ լողացող կետերի թվեր կամ տողեր են կամ երկուսն էլ `կախված նրանից, թե ինչպես են դրանք օգտագործվում: AWK- ն ունի նաեւ մեկ ծավալային զանգվածներ. բազմակի չափերի հետագծերը կարող են մոդելավորվել: Մի քանի նախապես սահմանված փոփոխականներ սահմանվում են որպես ծրագիր: դրանք կբացատրվեն որպես անհրաժեշտ եւ ամփոփված ստորեւ:

Ձայնագրություններ

Սովորաբար գրառումները բաժանվում են նոր տառերով: Դուք կարող եք վերահսկել, թե ինչպես են գրառումներն առանձնանում, արժեքներ նշանակելով RS- ներ ներկառուցված փոփոխականին: Եթե RS- ը միայնակ բնույթ է պարունակում, այդ բնույթը առանձնացնում է գրառումները: Հակառակ դեպքում RS- ը հերթական արտահայտություն է: Այս կանոնավոր արտահայտությանը համապատասխանող մուտքագրում տեքստը առանձնացնում է գրառում: Այնուամենայնիվ, համատեղելիության ռեժիմում գրառումների բաժանման համար օգտագործվում է միայն լարային արժեքի առաջին բնույթը: Եթե RS- ն սահմանվում է նարնջագույն տողում, ապա գրառումները բաժանվում են դատարկ գծերով: Երբ RS- ն սահմանվում է նարնջագույն տողում, նոր գծի բնույթը միշտ գործում է որպես դաշտային տարանջատիչ, բացի FS- ի արժեքից:

Դաշտերը

Քանի որ յուրաքանչյուր մուտքի գրառումը կարդացվում է, gawk- ն բաժանում է դաշտը , օգտագործելով FS փոփոխականի արժեքը, որպես դաշտային տարանջատող: Եթե FS- ը մեկ բնույթ է, դաշտերը առանձնացված են այդ բնույթով: Եթե FS- ն նարնջագույն տող է, ապա յուրաքանչյուր անհատական ​​բնավորությունը դառնում է առանձին դաշտ: Հակառակ դեպքում, FS- ը պետք է լինի լիարժեք հերթական արտահայտություն: Բացառիկ դեպքերում, որ FS- ը մեկ տարածություն է, դաշտերը բաժանվում են տարածությունների եւ / կամ ներդիրների եւ / կամ նոր գծերի հետ: (Բայց տեսեք posix- ի քննարկումները): Նշում. IGNORECASE- ի արժեքը (տես ստորեւ) նաեւ ազդում է ինչպես դաշտերը բաժանվում են, երբ FS- ը կանոնավոր արտահայտություն է, եւ երբ ռեգիստրը առանձնացված է, RS- ը կանոնավոր արտահայտություն է:

Եթե FIELDWIDTHS- ի փոփոխականը սահմանվում է թվերի տարանջատված ցանկից, յուրաքանչյուր դաշտը ակնկալվում է, որ ունենա ֆիքսված լայնություն, եւ gawk- ն առանձնացնում է ռեկորդը, օգտագործելով նշված լայնությունները: FS- ի արժեքը անտեսվում է: FS- ին նոր արժեք նշանակելը գերազանցում է FIELDWIDTHS- ի օգտագործումը եւ վերականգնում է կանխադրված պահվածքը:

Մուտքային գրառումներում յուրաքանչյուր դաշտը կարող է հղվել իր դիրքի, $ 1 , $ 2 եւ այլն: $ 0 - ամբողջ գրառումը: Դաշտերին չպետք է դիմել հաստատուն:

n = 5
Տպագիր $ n

տպագրում է հինգերորդ դաշտը մուտքագրման ռեկորդում:

NF- ի փոփոխականը սահմանվում է մուտքագրման դաշտում դաշտերի ընդհանուր թվաքանակը:

Ոչ գոյություն ունեցող դաշտերի հղումները (այսինքն $ NF- ից հետո դաշտերը) արտադրում են null-string: Այնուամենայնիվ, գոյություն չունեցող ոլորտին հանձնելը (օրինակ, $ (NF + 2) = 5 ) ավելացնում է NF- ի արժեքը, ստեղծում է միջամտող դաշտեր `առանցքային տողով իրենց արժեքը եւ առաջացնում է $ 0 արժեքը recomputed, դաշտերը բաժանվում են OFS- ի արժեքով: Բացասական համարակալված դաշտերի հղումները առաջացնում են ճակատագրական սխալ: NF- ի նվազեցումը առաջացնում է դաշտերի արժեքները անցյալում կորցրած նոր արժեքը եւ $ 0- ի արժեքը recomputed- ը, դաշտերը բաժանվում են OFS- ի արժեքով:

Առկա դաշտում արժեք սահմանելը հանգեցնում է ամբողջ գրառման վերակառուցմանը, երբ $ 0- ը հղում է կատարում: Նմանապես, $ 0-ի արժեքը նշանակում է, որ ռեկորդը վերահաստատում է, դաշտերի համար նոր արժեքներ ստեղծելով:

Ներկառուցված փոփոխականներ

Gawk- ի ներկառուցված փոփոխականներն են.

ARGC- ն

Հրամանի տողերի փաստարկների քանակը (չի ներառում gawk- ի տարբերակները կամ ծրագրի աղբյուրը):

ԱՐԺԻՆԴ

Ընթացիկ ֆայլի ARGV- ի ցուցանիշը վերամշակվում է:

ARGV

Հրամանի տողերի փաստարկների զանգված: Առանցքը ինդեքսավորվում է 0-ից մինչեւ ARGC -1: ARGV- ի բովանդակությունը դինամիկորեն փոխելով կարող է վերահսկել տվյալների համար օգտագործվող ֆայլերը:

BINMODE

Ոչ POSIX համակարգերի վրա ընդգրկում է բոլոր ֆայլային I / O- ի համար `` երկուական `ռեժիմի օգտագործումը: 1, 2 կամ 3 թվային արժեքները նշում են, որ մուտքի ֆայլերը, ելքային ֆայլերը կամ բոլոր ֆայլերը, համապատասխանաբար, պետք է օգտագործեն երկուական I / O: «R» կամ «w» ստրի արժեքները նշում են, որ մուտքի ֆայլերը կամ ելքային ֆայլերը համապատասխանաբար պետք է օգտագործեն երկուական I / O: «Rw» կամ «wr» ստրի արժեքները նշում են, որ բոլոր ֆայլերը պետք է օգտագործեն երկուական I / O: Ցանկացած այլ string արժեքը վերաբերվում է որպես «rw» , բայց առաջացնում է նախազգուշական հաղորդագրություն:

CONVFMT- ը

Թվերի համար փոխակերպման ձեւաչափը, «% .6g» , լռելյայնորեն:

ENVIRON

Ներկայիս միջավայրի արժեքները պարունակող զանգված: Ժապավենը ինդեքսավորվում է շրջակա միջավայրի փոփոխականների կողմից, յուրաքանչյուր տարր, այդ փոփոխականի արժեքը (օրինակ, ENVIRON ["HOME"] կարող է / home / arnold ): Այս զանգվածի փոփոխությունը չի ազդում շրջակա միջավայրի վրա, որը դիտարկվում է ծրագրերի միջոցով, որոնք թռիչքներ են իրականացնում ուղղորդման միջոցով կամ համակարգի () գործառույթով:

ERRNO- ն

Եթե ​​համակարգային սխալ տեղի է ունենում, կամ ուղղորդման համար ուղղորդում կատարելու համար, getline- ի ընթերցման ընթացքում կամ փակման ժամանակ () , ապա ERRNO- ը պարունակում է սխալի նկարագրող տող: Արժեքը ենթակա չէ թարգմանության ոչ անգլերեն լեզուներով:

FIELDWIDTHS- ը

Սպիտակ տիեզերքը առանձնացված դաշտային ծավալի ցուցակը: Սահմանելիս gawk- ն վերլուծում է մուտքագրումը ֆիքսված լայնության դաշտերում, փոխարենը FS փոփոխականի արժեքի օգտագործման դաշտի տարանջատիչի փոխարեն:

FILENAME- ը

Ներկայիս ներածման ֆայլի անունը: Եթե ​​հրամանի տողում ֆայլեր չեն նշվում, FILENAME- ի արժեքը `` `` `: Այնուամենայնիվ, FILENAME- ը undefined է BEGIN- ի բլոկի ներսում (բացառությամբ, եթե ստացվում է ստեղնաշարով ):

FNR

Ընթացիկ ներածման ֆայլում մուտքագրման ռեկորդային համարը:

FS

Ներածման դաշտի անջատողը, տիեզերքը լռելյայնորեն: Տես դաշտերը , վերեւում:

IGNORECASE

Վերահսկում է հերթական արտահայտության եւ լարային գործառնությունների գործի զգայունությունը: Եթե IGNORECASE- ը չունի զրոյական արժեք, այնուհետեւ պարամետրերի համեմատությունը եւ կանոնների համապատասխանությունը կանոնների մեջ, FS- ով դաշտի պառակտումը, ռեկորդը RS- ով , ռեգիստրը բաժանվում է RS- ով , եւ gensub () , gsub () , index () , match () , split () եւ sub () ներկառուցված գործառույթները բոլոր անտեսում դեպքում պարբերաբար արտահայտման գործողություններ կատարելիս: Նշում. Դասի ենթակառուցումը չի ազդում, եւ ոչ էլ asort () գործառույթն է:

Այսպիսով, եթե IGNORECASE- ը հավասար չէ զրոյին, / aB / համապատասխանում է «ab» , «aB» , «AB» եւ «AB» տողերի հետ: Ինչպես բոլոր AWK փոփոխականները, IGNORECASE- ի սկզբնական արժեքը զրո է, այնպես որ բոլոր կանոնավոր արտահայտությունը եւ լարային գործառնությունները սովորաբար զգայուն են: Յունիքսի համաձայն, ISO 8859-1 լատիներեն 1-ի ամբողջական տառատեսակը օգտագործվում է այն դեպքում, երբ անտեսելով գործը:

LINT- ը

Ապահովում է AWK ծրագրի շրջանակներում լիցքավորված տարբերակի դինամիկ հսկողություն: Երբ ճշմարիտ է, gawk նրբաթիթեղը նախազգուշացնում է: Երբ կեղծ է, դա չի: Երբ նշանակում է «ճակատագրական» լարային արժեքը, lint- ի նախազգուշացումները կդառնան ճակատագրական սխալներ, ճիշտ այնպես, ինչպես - lint = ճակատագրական : Ցանկացած այլ ճշմարիտ արժեք պարզապես նախազգուշացում է առաջացնում:

NF

Ընթացիկ մուտքագրման դաշտում դաշտերի թիվը:

NR

Ներկա պահին արձանագրված ներդրումների գրառումների ընդհանուր քանակը:

OFMT- ը

Արդյունքների ձեւաչափը ` «% .6g » , լռելյայնորեն:

OFS

Արդյունքների դաշտի անջատողը, տարածությունը լռելյայնորեն:

ORS- ը

Արդյունքների ռեեստրի բաժանարարը, որպես լռելյայն անվանում:

PROCINFO

Այս զանգվածի տարրերը հնարավորություն են տալիս տեղեկություններ մուտք գործելու AWK ծրագրի մասին: Որոշ համակարգերում կարող են լինել զանգվածի տարրեր, «group1» `որոշ« n »խմբի համար, որը հանդիսանում է գործընթացի լրացուցիչ խմբերի թիվը: Օգտագործեք օպերատորին, փորձեք այս տարրերի համար: Հասանելի են հետեւյալ տարրերը.

PROCINFO ["egid"]

getegid (2) համակարգի զանգի արժեքը:

PROCINFO ["euid"]

(2) համակարգի զանգի արժեքը:

PROCINFO ["FS"]

«FS» - ը, եթե FS- ով դաշտի պառակտումը գործում է, կամ «FIELDWIDTHS» դաշտում, FIELDWIDTHS- ով դաշտի պառակտման դեպքում:

PROCINFO ["gid"]

(2) համակարգի զանգի արժեքը:

PROCINFO ["pgrpid"]

ընթացիկ գործընթացի գործընթացի խմբի ID- ն:

PROCINFO ["pid"]

ընթացիկ գործընթացի ընթացիկ ID- ն:

PROCINFO ["ppid"]

ընթացիկ գործընթացի ծնողի ընթացիկ ID- ն:

PROCINFO ["uid"]

(2) համակարգի զանգի արժեքը:

RS

Ներածված ռեեստրի բաժանարարը, որպես լռելյայն նոր գծեր:

RT

Գրանցման տերմինալը: Gawk- ը սահմանում է RT- ի մուտքագրված տեքստը, որը համապատասխանում է RS- ի կողմից նշված բնույթին կամ հերթական արտահայտությանը:

RSTART

Առաջին նիշի ցուցանիշը համապատասխանում է խաղին () ; 0, եթե ոչ համընկնում: (Սա ենթադրում է, որ բնավորության ցուցանիշները սկսվում են մեկից):

RLENGTH- ը

Գծի երկարությունը, որը համապատասխանում է խաղին () ; -1, եթե ոչ մի խաղ:

SUBSEP- ը

Բառի համար օգտագործվում է բազմակի ենթաբազմությունների առանձնահատկությունը զանգվածի տարրերում, ըստ «\ 034» :

TEXTDOMAIN

AWK ծրագրի տեքստի տիրույթը; օգտագործվում է տեղայնացված թարգմանությունների համար ծրագրերի տողերի համար:

Դասեր

Մասերը ենթագրվում են քառակուսի փակագծերի միջեւ ընկած արտահայտությամբ ( [ եւ ] ): Եթե ​​արտահայտությունը արտահայտության ցանկն է ( expr , expr ...), ապա զանգվածի ենթակետը յուրաքանչյուր արտահայտության (լարային) արժեքի կոնցենտրացիայից բաղկացած տող է, որը առանձնացված է SUBSEP փոփոխականի արժեքով: Այս սարքավորումն օգտագործվում է բազմապատկել չափածված զանգվածներ: Օրինակ:

i = "A"; j = "B"; k = "C"
x [i, j, k] = "բարեւ, աշխարհ \ n"

նշանակում է «բարեւ, աշխարհ» տողը «A \ 034B \ 034C» տողով ինդեքսավորվող զանգվածի x- ի տարրին : AWK- ի բոլոր սցենարները ասոցացվում են, այսինքն ինդեքսավորված լարային արժեքներով:

Հատուկ օպերատորը կարող է օգտագործվել այն դեպքում, երբ հայտարարության մեջ տեսնենք, թե արդյոք մի զանգված ունի կոնկրետ արժեքից բաղկացած ինդեքս:

եթե (val array) print array [val]

Եթե ​​զանգվածն ունի բազմաթիվ ենթագրերի, օգտագործեք (i, j) զանգվածում :

Ներկառուցված կառուցվածքը կարող է օգտագործվել նաեւ հանգույցի համար, որպեսզի վերափոխվի զանգվածի բոլոր տարրերը:

Էլեմենտը կարող է ջնջվել ջնջված հայտարարությունից օգտվելով զանգվածից: Ջնջել հայտարարությունը կարող է օգտագործվել նաեւ զանգվածի ամբողջ բովանդակությունը ջնջելու համար `ընդամենը նշելով զանգվածի անունը` առանց ենթագրերի:

Փոփոխական մուտքագրում եւ փոխակերպում

Փոփոխականները եւ դաշտերը կարող են լինել (լողացող կետ) թվեր կամ տողեր կամ երկուսն էլ: Ինչպես փոփոխության արժեքը մեկնաբանվում է, կախված է դրա համատեքստից: Եթե ​​օգտագործվում է թվային արտահայտության մեջ, այն համարվում է որպես համար, եթե օգտագործվում է որպես տող, այն որպես տող.

Որպեսզի փոփոխության ենթարկվեն որպես թվ, ավելացրեք 0: այն ստիպել է այն դիտարկել որպես լարային, զուգահեռ այն զրոյական տողով:

Երբ տողը պետք է վերափոխվի մի շարք, փոխակերպումը կատարվում է strtod (3): Համարը փոխակերպվում է տողում, օգտագործելով CONVFMT- ի արժեքը որպես sprintf (3) ձեւաչափի տող, փոփոխականի թվային արժեքը որպես փաստարկ: Այնուամենայնիվ, չնայած AWK- ի բոլոր թվերը լողացող կետ են, ինտեգրալ արժեքները միշտ վերափոխվում են որպես ամբողջական թվեր: Այսպիսով, տրված

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

փոփոխական b- ն ունի «12» տողային արժեք եւ ոչ թե «12.00» :

Gawk- ը համեմատում է հետեւյալ կերպ. Եթե երկու փոփոխականները թվային են, դրանք համեմատաբար թվային են: Եթե ​​մեկ արժեքը թվային է, իսկ մյուսն ունի string արժեք, որը `` թվային տող է, 'ապա համեմատությունները կատարվում են նաեւ թվային: Հակառակ դեպքում, թվային արժեքը վերափոխվում է մի լարային եւ կատարվում է լարային համեմատություն: Համադրվում են երկու տողեր, իհարկե, որպես տողեր: Նշենք, որ POSIX- ի ստանդարտը կիրառվում է ամենուրեք «թվային տողերի» հասկացությունը, նույնիսկ տողերի կայուն: Սակայն, սա հստակ սխալ է, եւ gawk դա չի անում: (Բարեբախտաբար, դա ամրագրված է ստանդարտի հաջորդ տարբերակում):

Նշենք, որ string տողերը, ինչպիսիք են «57» , թվային տողեր չեն, դրանք տողային կայուն են: «Թվային տողերի» գաղափարը վերաբերում է միայն դաշտերին, getline մուտքագրմանը, FILENAME- ին , ARGV տարրերին, ENVIRON- ի տարրերին եւ սպլիտի () , որոնք թվային տողեր են ստեղծվել: Հիմնական գաղափարը այն է, որ օգտագործողի մուտքագրումը եւ միայն օգտագործողի մուտքագրումը, որ թվային տեսք ունեն, պետք է այդպես վարվեն:

Չօգտագործվող փոփոխականները ունեն թվային արժեքը 0 եւ string արժեքը ("null" կամ "empty", string):

Օլիմպիական եւ տասնութերորդ կայուն հաստատուններ

Gawk- ի 3.1 տարբերակից սկսած , դուք կարող եք օգտագործել C- ոճի octal եւ hexadecimal հաստատունները ձեր AWK ծրագրի կոդով: Օրինակ, octal արժեքը 011 հավասար է տասնորդական 9-ին , եւ hexadecimal արժեքը 0x11 հավասար է տասնորդական 17:

String Constants

AWK- ի լարային հանգույցները երկակի մեջբերումներ ( " ) միջեւ նիշերի հաջորդականությունն են: Ցանցերի մեջ ճանաչվում են որոշակի փախուստի հաջորդականություն :

\\

Ճշմարիտ ճեղքվածք:

\ a

«Զգոն» բնույթը; սովորաբար ASCII BEL- ի բնույթը:

\ b

backspace.

\ f

ձեւաթուղթ:

\ n

նոր տող.

\ r

փոխադրման վերադարձը:

\ t

հորիզոնական տախտակ:

\ v

ուղղահայաց էջանիշ:

\ x hex թվանշանները

Բնույթը, որը ներկայացված է տասնվեցերորդ նիշերի շարքի \ x- ով : Ինչպես ANSIC- ում, բոլոր հաջորդ տասնվեցամյա թվերը համարվում են փախուստի հաջորդականության մի մասը: (Այս առանձնահատկությունը պետք է մեզ ինչ-որ բան հաղորդի կոմիտեի կողմից լեզուների նախագծման վերաբերյալ): Օրինակ, «\ x1B» - ը ASCIIESC (փախուստի) բնույթն է:

\ ddd

Բնույթը, որը ներկայացված է օկտյա թվերի 1-, 2- կամ 3 նիշային հաջորդականությամբ: Օրինակ ` " \ 033 " - ASCII ESC (փախուստի) բնույթ:

\ c

Կատարված բնույթը գ .

Փախուստի հաջորդականությունները կարող են օգտագործվել նաեւ պարբերաբար պարբերական արտահայտությունների մեջ (օրինակ, / [\ t \ f \ n \ r \ v] / սպիտակ տառերի հերոսների հետ):

Համատեղելիության ռեժիմում, octal եւ hexadecimal փախուստի հաջորդականությունների ներկայացված նիշերը վերաբերվում են բառացիորեն, երբ օգտագործվում են պարբերաբար արտահայտիչ հաստատություններում: Այսպիսով, / a \ 52b / համարժեք է / a \ * բ / :

Նմուշներ եւ գործողություններ

AWK- ը գծային ուղղվածություն ունեցող լեզու է: Նախագիծը առաջինն է, հետո `ակցիան: Գործողության մասին հայտարարությունները կցվում են { եւ } : Կամ օրինակ կարող է բացակայել, կամ գործողությունը կարող է բացակայել, բայց, իհարկե, ոչ թե երկուսն էլ: Եթե ​​օրինակը բացակայում է, ակցիան կատարվում է մուտքագրման յուրաքանչյուր գրառման համար: Անհայտ կորած գործողությունը համարժեք է

{print}

որը տպագրում է ողջ ռեկորդը:

Մեկնաբանությունները սկսվում են `` # 'բնույթով եւ շարունակվում են մինչեւ գիծը: Բանալի գծերը կարող են օգտագործվել առանձին հայտարարություններով: Սովորաբար, հայտարարությունը ավարտվում է նոր գծի հետ, սակայն դա չի նշանակում, որ ավարտվում են տողեր `` `, '', { , ? , : , && , կամ || . Դրանք ավարտվում են կամ էլ իրենց հայտարարությունները ավտոմատ կերպով շարունակում են հետեւյալ տողում: Այլ դեպքերում գիծը կարող է շարունակվել, դրանով վերջ տալը, որի դեպքում նորը չի անտեսվի:

Բազմաթիվ հայտարարություններ կարող են դրվել մեկ տողում `դրանք բաժանելով` ``; '': Սա վերաբերում է ինչպես օրինակ-գործողություն զույգի (սովորական դեպքի) գործողության մասի, այնպես էլ օրինակ-գործողությունների հայտարարությունների մասին:

Պատկերները

AWK նմուշները կարող են լինել հետեւյալը.

BEGIN END / կանոնավոր արտահայտություն / հարաբերական արտահայտման օրինակ եւ & pattern pattern || օրինակելի օրինակ օրինակ ` օրինակ ( օրինակ ) : pattern pattern1 , pattern2

BEGIN- ը եւ END- ը երկու յուրահատուկ նմուշներ են, որոնք չեն փորձարկվում մուտքի դեմ: Բոլոր BEGIN- ի նախշերով գործողության մասերը միավորված են, քանի որ բոլոր հայտարարությունները գրվել են մեկ BEGIN բլոկում: Նրանք կատարվում են նախքան որեւէ ներդրման կարդալը: Նմանապես, բոլոր END բլոկները միաձուլված են եւ կատարվում են, երբ բոլոր մուտքերը սպառված են (կամ երբ ելքի հայտարարությունը կատարվում է): BEGIN- ը եւ END- ը չեն կարող համադրվել օրինակելի արտահայտությունների հետ: BEGIN- ը եւ END- ը կարող են բացակայել գործողությունների մաս:

For / կանոնավոր արտահայտության / նախշերով, ասոցիացված հայտարարությունը կատարվում է յուրաքանչյուր մուտքագրում ռեկորդային, որը համապատասխանում է հերթական արտահայտությանը: Հերթական արտահայտությունները նույնն են, ինչ egrep (1), եւ ամփոփված են ստորեւ:

Հղումային արտահայտությունը կարող է օգտագործել ցանկացած գործող օպերատորներ ստորեւ նշված գործողությունների բաժնում: Սրանք ընդհանրապես ստուգում են, արդյոք որոշ դաշտերը համապատասխանում են որոշակի կանոնավոր արտահայտություններին

The && , || , եւ ! օպերատորները տրամաբանական են AND, տրամաբանական OR կամ տրամաբանական չէ, ինչպես նաեւ C. Նրանք անում են կարճ միացում գնահատումը, ինչպես նաեւ C- ում եւ օգտագործվում են ավելի պարզունակ ձեւային արտահայտություններ համատեղելու համար: Ինչպես շատ լեզուներով, պարունակում են գնահատման կարգը:

The : օպերատորը նույն նույն օպերատորն է C- ի դեպքում: Եթե առաջին նմուշը ճիշտ է, ապա փորձարկման համար օգտագործվող օրինակն երկրորդ նմուշն է, հակառակ դեպքում դա երրորդն է: Գնահատվում է միայն երկրորդ եւ երրորդ հրահանգներից մեկը:

The pattern1 , pattern2 ձեւի արտահայտությունը կոչվում է շարք մոդել : Այն համապատասխանում է բոլոր մուտքի գրառումներին, սկսած ռեկորդից, որը համապատասխանում է pattern1 եւ շարունակում է մինչեւ ռեկորդ, որը համապատասխանում է pattern2 , ներառյալ: Այն չի համադրում որեւէ այլ ձեւի արտահայտության հետ:

Կանոնավոր արտահայտություններ

Հաճախակի արտահայտություններ են, որոնք պարունակում են ձմռպել : Դրանք բաղկացած են նիշերից հետեւյալը.

գ

համապատասխանում է ոչ մետաքսարացնող գ .

\ c

համապատասխանում բառացի բնույթին գ .

.

համընկնում ցանկացած գծի, այդ թվում ` նոր գծի:

^

համապատասխանում է լարային սկիզբը:

$

համընկնում է տողերի ավարտին:

[ abc ... ]

հերոսների ցուցակը, համապատասխանում է բոլոր նիշերի abc ...

[^ abc ... ]

անհայտ տառեր ցուցակը համընկնում է ցանկացած բնույթի, բացի abc- ից ... :

r1 | r2

հերթափոխություն. համապատասխանում է r1 կամ r2- ին :

r1r2

concatenation: r1- ը եւ ապա r2- ը :

r +

համապատասխանում է մեկ կամ ավելի r- ի:

r *

համապատասխանում է զրո կամ ավելի r- ի:

r ?

համապատասխանում է զրո կամ մեկ r- ի:

( r )

խմբավորում.

r { n }

r { n ,}

r { n , m } braces- ի ներսում մեկ կամ երկու համարը նշանակում է միջանկյալ արտահայտություն : Եթե ​​կա մի շարք թղթապանակում, նախորդ հերթական արտահայտությունը r- ը կրկնվում է n անգամ: Եթե ​​կա երկու նիշ , բաժանված է ստորակետով, r- ը կրկնվում է n- ից m անգամ: Եթե ​​կա մեկ համար, որը հաջորդում է ստորակետ, ապա r- ը կրկնում է առնվազն n անգամ:

Միջանկյալ արտահայտությունները հասանելի են միայն այն դեպքում, երբ հրամանի տողում նշվում է ` --posix կամ --re-interval :

\ y

համապատասխանում է դատարկ տողը կամ բառի սկզբում կամ վերջում:

\ Բ

համընկնում է մի բառի մեջ դատարկ տողերի հետ:

\ <

բառի սկզբում դատարկ տողերի հետ համընկնում է:

\>

բառի վերջում համապատասխանում է դատարկ տողը:

\ w

համընկնում է ցանկացած բառի բաղադրիչի բնույթ (նամակ, թվանշան կամ ընդգծում):

\ W

համընկնում է ցանկացած բնույթ, որը բառի բաղադրիչ չէ:

\ '

համընկնում է դատարկ տողը բուֆերի սկզբում (լարային):

\ '

բուֆերի վերջում համապատասխանում է դատարկ տողին:

Փախուստի հաջորդականությունները, որոնք գործում են string շարքերում (տես ստորեւ), նույնպես գործում են կանոնավոր արտահայտություններում:

Նիշերի դասերը նոր առանձնահատկություններ են, որոնք ներկայացված են POSIX ստանդարտում: Նիշերի դասը հատուկ նշան է հատուկ հատկանիշ ունեցող հերոսների ցուցակների նկարագրման հատուկ նշում, բայց եթե իրական նիշերը կարող են տարբեր լինել երկրից եւ / կամ բնույթից սահմանել բնույթ: Օրինակ, այն, ինչ տառապում է այբուբենը, տարբերվում է ԱՄՆ-ում եւ Ֆրանսիայում:

Նիշերի դասը միայն վավեր է բնույթի ցուցակի փակագծերում ներդնող հերթական արտահայտությամբ: Նիշերի դասերը բաղկացած են [: , դասի նշանակող բանալի բառով եւ `] : POSIX ստանդարտով սահմանված բնույթի դասերը հետեւյալն են.

[: alnum:]

Alphanumeric նիշերը:

[: ալֆա:]

Այբբենական նշանները:

[: blank:]

Տիեզերք կամ ներդիր նիշ:

[: cntrl:]

Վերահսկիչ նիշերը:

[: թվանշան:]

Թվային նիշերը:

[: գրաֆիկ:]

Անձնավորություններ, որոնք տպագրված են եւ տեսանելի: (Տիեզերքը տպագրված է, բայց ոչ տեսանելի, իսկ a -ը երկուսն էլ):

[:ավելի ցածր:]

Նվազագույն այբուբենիկ նիշերը:

[: տպել]

Տպվող նիշերը (հերոսները, որոնք հսկվող նիշերը չեն):

[: կետ:]

Տոկկուլյացիայի նշանները (տառերը, տառերը, թվերը, հսկիչ նիշերը կամ տիեզերական նիշերը):

[: տեղ:]

Տիեզերական նիշերը (օրինակ, տիեզերք, էջանիշ եւ ձեւակերպում, մի քանի անուն):

[: վերին:]

Վերին դեպքերում այբբենական նշաններ:

[: xdigit:]

Բառեր, որոնք տասնվեցավորական թվեր են:

Օրինակ, POSIX- ի ստանդարտից առաջ, պետք է գրել / [A-Za-z0-9] / : Եթե ​​ձեր բնութագիրը պարունակում է այլ այբբենական նշաններ, ապա դա չի համապատասխանում նրանց, եւ եթե ձեր բնավորությունը տարբերվում է ASCII- ից, դա կարող է նույնիսկ չի համապատասխանում ASCII ալֆանական թվային նիշերին: POSIX- ի կերպարների դասերի հետ կարող եք գրել / [[: alnum:]] / , եւ սա համապատասխանում է ձեր բնավորության սահմաններում այբբենական եւ թվային նիշ:

Բառերի ցուցակներում կարող են հայտնվել երկու լրացուցիչ հատուկ հաջորդականություն: Դրանք կիրառվում են ոչ ASCII- ի բնույթների սահմաններում, որոնք կարող են ունենալ միայնակ նշաններ (կոչվում են բազմապատկող տարրեր ), որոնք ներկայացված են մեկից ավելի բնույթով, ինչպես նաեւ մի քանի նիշ, որոնք համարժեք են համախմբելու կամ տեսակավորման համար: (Օրինակ `ֆրանսերեն, պարզ` `` եւ ծանր ակտավորված է `համարժեք):

Կլորացնելով խորհրդանիշները

Բազմացնող խորհրդանիշը [. եւ .] : Օրինակ, եթե ch- ը կոլեկտիվ տարր է, ապա [[.]] - ը հերթական արտահայտություն է, որը համապատասխանում է այս խմբավորման տարրին, իսկ [ch] հերթական արտահայտությունն է, որը համապատասխանում է կամ c կամ h :

Համարժեքության դասեր

Էժանության դասը տեղական հատուկ անուն է, որը համարժեք է նիշերի ցանկին: Անունը կցված է [= եւ =] մեջ : Օրինակ `անունը կարող է օգտագործվել` «e», «e», «'եւ` `` բոլորի համար »: Այս դեպքում [[= e =]] հերթական արտահայտությունն է, համընկնում է e , e ' , կամ e- ից :

Այս հատկությունները շատ արժեքավոր են ոչ անգլերեն լեզվով խոսող տեղերում: Գրադարանը գործում է, որ gawk- ը օգտագործում է հերթական արտահայտության համար, ներկայումս միայն ճանաչում է POSIX- ի կերպարների դասերը: նրանք չեն ճանաչում ամփոփիչ խորհրդանիշները կամ համարժեքության դասերը:

The \ y , \ B , \ < , \> , \ w , \ W , \ ` եւ \ ' օպերատորները հատուկ են gawk ; դրանք ընդլայնումներ են, որոնք հիմնված են GNU կանոնավոր արտահայտության գրադարաններում:

Տարբեր հրամանի տող տարբերակները վերահսկում են, թե ինչպես gawk- ը պարբերաբար արտահայտում է նիշերը:

Ընտրանքներ չկան

Նախնական դեպքում, gawk- ը տրամադրում է POSIX կանոնավոր արտահայտությունների բոլոր հնարավորությունները եւ վերը նկարագրված GNU կանոնավոր արտահայտիչ օպերատորները: Այնուամենայնիվ, միջանկյալ արտահայտությունները չեն աջակցվում:

- posix

Միայն POSIX կանոնավոր արտահայտություններ են հաստատվում, GNU օպերատորները հատուկ չեն: (Օրինակ, w- ը համապատասխանում է բառացի w ): Միջանկյալ արտահայտություններ թույլատրվում են:

- ավանդական

Ավանդական Unix awk- ի հերթական արտահայտությունները համապատասխանում են: GNU- ի օպերատորները հատուկ չեն, ընդմիջվող արտահայտությունները հասանելի չեն, եւ ոչ էլ POSIX- ի կերպարների դասերը ( [[: alnum:]] եւ այլն): Օկտալ եւ տասնվեցամյա փախուստի հաջորդականությունների նկարագրված տառերը բառացիորեն վերաբերվում են նույնիսկ եթե նրանք ներկայացնում են կանոնավոր արտահայտություն metacharacters:

- ընդմիջում

Թույլ տալ միջանկյալ արտահայտություններ պարբերաբար արտահայտելիս, նույնիսկ եթե ավանդական տրամադրվել է:

Գործողություններ

Գործողության մասին հայտարարությունները կցվում են braces, { եւ } . Գործողությունների հայտարարությունները բաղկացած են սովորական հանձնարարություններից, պայմանականից եւ հանգույցներից, որոնք շատ լեզուներով են հայտնաբերվել: Օպերատորները, հսկիչ հայտարարությունները եւ մատչելի / ելքային հաշվետվությունները հասանելի են C- ից հետո:

Օպերատորներ

AWK- ի օպերատորները, նախորդության նվազեցման նպատակով, ունեն

( ... )

Խմբավորում

$

Դաշտային տեղեկանք:

++ -

Բարձրացում եւ նվազում, ինչպես նախապատվությունը, այնպես էլ հետադարձ:

^

Exponentiation ( ** կարող է օգտագործվել նաեւ, եւ ** = նշանակման օպերատորի համար):

+ -!

Unary plus, unary մինուս եւ տրամաբանական մերժում:

* /%

Բազմապատկում, բաժանում եւ մոդուլ:

+ -

Լրացում եւ վերացում:

տարածություն

Լարային կապտացում:

<>

<=> =

! = == Պարբերական հարաբերական օպերատորները:

~! ~

Հերթական արտահայտության խաղը, մերժված խաղը: Նշում. Մի օգտագործեք անընդհատ հերթական արտահայտություն ( / foo / ) ձախ կողմում ~ կամ ~ ~ : Օգտագործեք միայն մեկը աջ կողմում: Արտահայտությունը / foo / ~ exp ունի նույն իմաստը, ինչպես (($ 0 ~ / foo /) ~ exp ) : Դա սովորաբար այն չէ, ինչ նախատեսված էր:

ին

Array անդամակցություն:

&&

Տրամաբանական AND.

||

Տրամաբանական OR.

?:

C- ի պայմանական արտահայտությունը: Այս ձեւն ունի արտոնություն : expr2 : expr3 : Եթե expr1 իսկական է, արտահայտության արժեքը expr2 է , հակառակ դեպքում դա expr3 է : Գնահատվում է միայն expr2 եւ expr3 :

= + = - =

* = / =% = ^ = Հանձնարարություն: Կատարվում են թե բացարձակ հանձնարարություն ( var = արժեք ) եւ օպերատորի նշանակում (այլ ձեւեր):

Վերահսկիչ հաշվետվություններ

Հսկիչ հայտարարությունները հետեւյալն են.

եթե ( պայման ) հայտարարություն [ else հայտարարություն ] while ( condition ) հայտարարություն անել հայտարարության համար ( պայման ) համար ( expr1 ; expr2 ; expr3 ) հայտարարություն համար ( var array ) հայտարարություն ընդմիջում շարունակել ջնջել array [ ինդեքս ] delete array exit [ արտահայտություն ] { հայտարարություններ }

I / O հայտարարություններ

Ներածման / ելքային հաշվետվությունները հետեւյալն են.

փակել ( ֆայլ [ , ինչպես ] )

Փակել ֆայլը, խողովակը կամ համանման գործընթացը: Լրացուցիչ ընտրանքը, թե ինչպես պետք է օգտագործվի միայն երկկողմանի խողովակների մի եզրագիծը փակելու ժամանակ: Այն պետք է լինի string արժեք, կամ «դեպի» կամ «ից» :

getline

Սահմանել $ 0 հաջորդ մուտքագրումից; սահմանել NF , NR , FNR :

getline < file

Սահմանել $ 0 ֆայլի հաջորդ գրառումից; սահմանել NF- ն :

getline var

Սահմանել var հաջորդ մուտքագրումից; սահմանել NR , FNR :

getline var < file

Սահմանել var ֆայլի հաջորդ գրառումից:

հրամանը | getline [ var ]

Կառավարեք հրամանը, որը թողարկի արտադրանքը կամ $ 0-ը կամ վեր, ինչպես վերեւում:

հրաման | & getline [ var ]

Գործարկել հրամանը `որպես համաֆինանսավորումը թողարկելու արդյունքը կամ $ 0-ը կամ վեր, ինչպես վերեւում: Համանախագահող գործընթացները գաջի ընդլայնումն են:

հաջորդը

Դադարեցնել ընթացիկ ներածման արձանագրությունը: Հաջորդ ներդրումային գրառումն ընթերցվում եւ մշակվում է AWK ծրագրի առաջին նախնական օրինակով: Եթե ​​մուտքագրման տվյալների վերջը հասնի, ապա END բլոկը (ներ), եթե առկա է, կատարվում են:

nextfile

Դադարեցնել ընթացիկ ներածման ֆայլը մշակելը: Հաջորդ մուտքի գրառումը կարդացվում է հաջորդ մուտքագրման ֆայլից: FILENAME- ը եւ ARGIND- ը թարմացվում են, FNR- ն վերակտիվանում է 1-ին, իսկ վերամշակումը սկսվում է AWK- ի առաջին նախնական օրինակով: Եթե ​​մուտքագրման տվյալների վերջը հասնի, ապա END բլոկը (ներ), եթե առկա է, կատարվում են:

Տպել

Տպում է ընթացիկ ռեկորդը: Արդյունքների ռեկորդը դադարում է ORS փոփոխականի արժեքով:

տպագիր ցուցակի ցուցակը

Պատճառները արտահայտում են: Յուրաքանչյուր արտահայտություն առանձնացված է OFS փոփոխականի արժեքով: Արդյունքների ռեկորդը դադարում է ORS փոփոխականի արժեքով:

Տպել ցուցակի ցուցակը > ֆայլը

Պատճենները արտահայտում են ֆայլում : Յուրաքանչյուր արտահայտություն առանձնացված է OFS փոփոխականի արժեքով: Արդյունքների ռեկորդը դադարում է ORS փոփոխականի արժեքով:

printf fmt, ցուցակի ցուցակը

Ֆորմատ եւ տպագիր:

printf fmt, expr-list > ֆայլը

Ֆորմատ եւ տպել ֆայլում :

համակարգ ( cmd-line )

Կատարեք command cmd-line- ը եւ վերադառնա ելքի կարգավիճակը: (Սա հնարավոր չէ հասանելի չէ ոչ POSIX համակարգերի վրա):

fflush ( [ ֆայլ ] )

Թափել ցանկացած բուֆեր, կապված բաց արտադրանքի ֆայլի կամ խողովակի ֆայլի հետ : Եթե ֆայլը բացակայում է, ապա ստանդարտ արտադրանքը փխրեցված է: Եթե ֆայլը նարնջագույն տող է, ապա բոլոր բաց ֆայլերը եւ խողովակները ունեն իրենց բուֆերները:

Լրացուցիչ արտադրանքի վերաձեւակերպումները թույլատրվում են տպագրության եւ printf- ի համար :

Տպել ... >> ֆայլը

ֆայլի վրա ավելացնում է արտադրանքը:

տպել ... | հրաման

գրում է խողովակում:

Տպել |

տվյալների փոխանցում է համանախագահների գործընթացին:

Getline հրամանը վերադառնում է ֆայլի վերջում 0, իսկ սխալը `-1: Խախտումից հետո ERRNO- ն պարունակում է խնդիրը նկարագրող տող:

Նշում. Եթե ​​օգտագործեք խողովակ կամ համանախագահող գործընթաց, որպեսզի ստացվի , կամ տպաքանակից կամ printf- ից մի օղակ, դուք պետք է օգտագործեք close () հրահանգի նոր դրույթներ: AWK- ը ինքնաբերաբար չի փակել խողովակներ կամ համանման գործընթացներ, երբ նրանք վերադառնում են EOF:

Տպագիր հայտարարություն

Printf- ի հայտարարության եւ sprintf () ֆունկցիայի AWK տարբերակները (ստորեւ բերված ստորեւ) ընդունում են հետեւյալ վերափոխման ճշգրտման ձեւաչափերը.

գ

ASCII բնույթ: Եթե % c- ի համար օգտագործված փաստարկը թվային է, այն վերաբերվում է որպես բնույթ եւ տպագիր: Հակառակ դեպքում, փաստարկը ենթադրվում է տող, եւ այդ տողի առաջին բնույթը տպագրվում է:

% d , % i

Տասական համար (ամբողջական մաս):

e,% E

Ձախող կետի համարը [-] d.dddddde [+ -] dd . % E ձեւաչափը E- ի փոխարեն օգտագործում է E- ը:

% f

Ձախող կետի համարը [-] ddd.dddddd .

g,% Գ

Օգտագործեք % e կամ % f փոխակերպում, որն ավելի կարճ է, քան աննշան նոսրերը: % G ձեւաչափը օգտագործում է % e- ի փոխարեն % e- ը :

o

Անկուսակցական օկտացիոն համարը (նաեւ ամբողջ թիվ):

% u Անկուսակցական տասնորդական համար (կրկին, մի ամբողջ թիվ):

% s

Բառի տող.

% x,% X

Ստորագրված տասնվեցամյա թվաքանակ (ամբողջական թիվ): % X ձեւաչափը abcdef- ի փոխարեն օգտագործում է ABCDEF- ը :

%%

Մեկը բնութագիր; ոչ մի փաստարկ չի փոխակերպվում:

Լրացուցիչ, լրացուցիչ պարամետրերը կարող են պատահել % եւ հսկողության նամակի միջեւ:

հաշվել $

Օգտագործեք հաշվիչի փաստարկը այս պահին ֆորմատավորման մեջ: Սա կոչվում է դիրքորոշիչ, եւ նախատեսված է հիմնականում օգտագործման ձեւաչափով տառատեսակների թարգմանված տարբերակներում, այլ ոչ թե AWK ծրագրի սկզբնական տեքստում: Դա գավթի ընդլայնումն է:

- Դեպի

Արտահայտությունը պետք է մնա արդարացված իր դաշտում:

տարածություն

Թվային փոխակերպումների համար `տարածքի հետ նախածանց դրական արժեքներ եւ բացասական արժեքներ` մինուս նշանով:

+

Ընդլայնված մոդիֆիֆիերի համար օգտագործված գումարային նշանը (տես ստորեւ), ասում է, որ միշտ էլ թվային փոխարկումների նշան է ապահովում, նույնիսկ եթե ձեւափոխված տվյալները դրական են: + + Overrides տարածության փոփոխիչ.

#

Օգտագործեք `` այլընտրանքային ձեւ `որոշակի հսկիչ տառերի համար: % O- ի համար առաջատար զրոյի մատակարարում: % X եւ % X- ի համար առաջացնում է առաջատար 0x կամ 0X սահուն արդյունք: % E , % E եւ % f- ի համար արդյունքը միշտ պարունակում է տասնորդական կետ: % G- ի եւ % G- ի համար , ձողերը ձգվում են արդյունքից:

0

Առաջատար 0 (զրո) հանդես է գալիս որպես դրոշ, որը ցույց է տալիս, որ արտադրանքը պետք է padded with zeroes փոխարեն տարածքներ: Սա վերաբերում է նույնիսկ ոչ թվային ելքային ձեւաչափերին: Այս դրոշը միայն ազդեցություն ունի, երբ դաշտի լայնությունը լայն է, քան տպագրված արժեքը:

լայնությունը

Դաշտը պետք է լցված լինի այս լայնությամբ: Դաշտը սովորաբար տարածվում է բացատներով: Եթե 0 դրոշը օգտագործվել է, ապա այն zeroes է padded.

. Նախկինում

Մի շարք, որը հստակեցնում է տպագրության ժամանակ օգտագործելու ճշգրտությունը: % E , % E եւ % f ձեւաչափերի համար սա սահմանում է տասնորդական կետի աջից տպված թվանշանների թվաքանակը: % G եւ % G ձեւաչափերի համար այն սահմանում է զգալի թվերի առավելագույն քանակ: % D , % o , % i , % u , % x եւ % X ձեւաչափերի համար այն սահմանում է թվերի նվազագույն քանակ: % S- ի համար այն սահմանում է այն տողից նիշերի առավելագույն քանակը, որոնք տպագրվում են:

ANSI C printf () ռեժիմների դինամիկ լայնությունը եւ հասանելի հնարավորությունները աջակցվում են: A * կամ լայնության կամ նախնական բնութագրերի փոխարեն առաջացնում են իրենց արժեքները փաստարկների ցուցակից ` printf կամ sprintf () : Դիրեկտիվ առանձնահատկություն ունեցող դինամիկ լայնությամբ կամ ճշգրտությամբ օգտագործելու համար ձեւաթղթի մեջ նշեք $ հաշիվը : Օրինակ, «% 3 $ * 2 $. * 1 $ s» :

Հատուկ ֆայլի անուններ

Երբ I / O- ի վերահասցեավորում է տպել կամ printf ֆայլից կամ ֆայլի միջոցով getline- ից, gawk- ը ճանաչում է որոշակի հատուկ ֆայլի անուններ: Այս ֆայլերի անունները թույլ են տալիս մուտք գործել բաց կոդով ֆայլեր, որոնք ժառանգվում են ծնողի ծնողական գործընթացի (սովորաբար shell): Այս ֆայլի անունները կարող են օգտագործվել նաեւ հրամանի տողում, տվյալների ֆայլերը անվանելու համար: Ֆայլերի անունները հետեւյալն են.

/ dev / stdin

Ստանդարտ մուտքագրումը:

/ dev / stdout

Ստանդարտ արտադրանքը:

/ dev / stderr

Ստանդարտ սխալ արտադրանքը:

/ dev / fd / n

Բաց ֆայլի նկարագրության հետ կապված ֆայլը n .

Սրանք հատկապես օգտակար են սխալի հաղորդագրությունների համար: Օրինակ:

Տպել «Դու պայթեցիր այն»: > "/ dev / stderr"

մինչդեռ այլ կերպ կվարվեիք

Տպել «Դու պայթեցիր այն»: | | "cat 1> & 2"

Հետեւյալ հատուկ ֆայլերի անունները կարող են օգտագործվել ` | & համօգտագործման օպերատորի հետ TCP / IP ցանցային կապեր ստեղծելու համար:

/ inet / tcp / lport / rhost / rport

Ֆայլի TCP / IP կապի տեղական նավահանգիստը lport- ում `հեռավոր հյուրանոցային ռոոստի հեռավոր նավահանգիստներում: Օգտագործեք 0-ի նավահանգիստը, որպեսզի համակարգը ընտրի նավահանգիստ:

/ inet / udp / lport / rhost / rport

Նմանապես, բայց TCP / IP- ի փոխարեն օգտագործեք UDP / IP- ը:

/ inet / raw / lport / rhost / rport

Պահպանվում է ապագա օգտագործման համար:

Այլ հատուկ ֆայլերի անվանումները հնարավորություն են տալիս մուտք գործել գաջի գործընթացը: Այս ֆայլի անունները այժմ հնացած են: Օգտագործեք PROCINFO զանգվածը ստանալու համար տրամադրվող տեղեկատվությունը: Ֆայլերի անունները հետեւյալն են.

/ dev / pid

Ընթերցման այս ֆայլը վերադարձնում է ընթացիկ գործընթացի գործընթացի ID- ն, տասնորդական տառերով, վերջացրած նոր տողով:

/ dev / ppid

Ընթերցման այս ֆայլը վերադարձնում է ընթացիկ գործընթացի ծնողի ընթացիկ ID- ն, տասնորդական տառերով, վերջացրած նոր գծով:

/ dev / pgrpid

Ընթերցման այս ֆայլը վերադարձնում է ընթացիկ գործընթացի գործընթացի խմբային ID- ն, տասնորդական տառերով, վերջացրած նոր տողով:

/ dev / user

Ընթերցման այս ֆայլը վերադարձնում է նոր նշումով հետաձգված մեկ գրառում: Դաշտերը բաժանված են տարածքներով: $ 1 - ը, գետվիլի (2) համակարգային զանգի արժեքը, $ 2 - ը, geteuid (2) համակարգային զանգի արժեքը, $ 3 - ը, գայթակղիչ (2) համակարգի զանգի արժեքը, իսկ $ 4- ը getegid- ի արժեքն է (2) համակարգային զանգ. Եթե ​​կան լրացուցիչ դաշտեր, ապա նրանք վերադարձված խմբային ID- ները (2) են: Բազմաթիվ խմբեր չեն կարող ապահովվել բոլոր համակարգերում:

Թվային գործառույթներ

AWK ունի հետեւյալ ներկառուցված թվաբանական գործառույթները.

atan2 ( y , x )

Վերադարձնում է y / x- ի արբանյակները ռադիաններում:

cos ( expr )

Վերադարձնում է expr- ի կազինինը , որը գտնվում է ռադիյաններում:

exp ( expr )

Արտահայտման գործառույթը:

int ( expr )

Կրճատվում է ամբողջ թիվ:

մուտք ( բացատրություն )

Բնական լոգարիթմների գործառույթը:

rand ()

Վերադարձնում է 0-ից 1-ի միջեւ պատահական համարը:

մեղք (արտահայտություն )

Վերադարձնում է expr- ի սինուսը, որը գտնվում է ռադիյաններում:

sqrt ( expr )

Քառակուսի արմատային ֆունկցիան:

srand ( [ expr ] )

Օգտագործում է որպես նոր սերմ, որպես պատահական թվերի գեներատոր: Եթե ​​որեւէ արտոնություն նախատեսված չէ, ապա օգտագործվում է օրվա ժամը: Վերադարձի արժեքը նախնական սերմն է պատահական թվերի գեներատորի համար:

Լարային գործառույթներ

Gawk- ն ունի հետեւյալ ներկառուցված լարային գործառույթները.

asort ( s [ , d ] )

Վերադարձնում է աղբյուրի զանգվածի տարրերի քանակը: Սերիայի բովանդակությունը դասավորված է օգտագործելով gawk- ի նորմերը, համեմատելով արժեքները, եւ s- ի դասավորված արժեքների ցուցանիշները փոխարինվում են հաջորդական թվից, սկսած 1-ից: Եթե ընտրովի ընտրանքային զանգվածը դ է, ապա s- ը առաջին անգամ կրկնօրինակում է d , ապա d- ն դասավորված է, թողնելով աղբյուրի զանգվածի ինդեքսները անփոփոխ:

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

Որոնեք թիրախային տողը ` r- ի հերթական արտահայտությունների համար: Եթե h- ը g կամ G- ով սկսվող տող է , ապա փոխեք r- ի բոլոր համընկնումները: Հակառակ դեպքում h- ը համար է, որը ցույց է տալիս, թե որ համընկնում է r- ը : Եթե t չի մատակարարվում, փոխարենը օգտագործվում է $ 0 : Փոխարինման տեքստի տողում , հաջորդականությունը \ n է , որտեղ n- ը 1-ից 9 թվանշան է, կարող է օգտագործվել միայն այն տեքստը, որը համապատասխանում է n- ի եռանկյունաձեւ subexpression- ին: \ 0 հաջորդականությունը ներկայացնում է ամբողջ համապատասխանեցված տեքստը, ինչպես նաեւ բնույթը & . Ի տարբերություն sub () եւ gsub () , փոփոխված տողը վերադարձվում է որպես ֆունկցիայի արդյունքում, եւ սկզբնական թիրախային տողը չի փոխվել:

gsub ( r , s [ , t ] )

Ցանկի տողում պարունակվող հերթական արտահայտությանը համապատասխանող յուրաքանչյուր տողում փոխարինել տողը s , եւ փոխարինել թվային փոխարինումների թիվը: Եթե t չի մատակարարվում, օգտագործել $ 0 : Փոխարինման տեքստում եւ փոխարինվում է տեքստը, որը փաստացի համապատասխանում է: Օգտագործեք \ & ստացեք բառացի & . (Սա պետք է մուտքագրվի որպես «\\ &» , տես GAWK: Արդյունավետ AWK ​​ծրագրավորում sub () , gsub () , եւ gensub () փոխարինող տեքստում, եւ իջնում եւ իջեցում կանոնների համար:

ինդեքս ( s , t )

Վերադարձնում է տողի տողի ինդեքսը տողում, կամ 0-ը, եթե չկա: (Սա ենթադրում է, որ բնավորության ցուցանիշները սկսվում են մեկից):

երկարություն ( [ s ] )

Վերադարձնում է string- ի երկարությունը կամ $ 0- ը, եթե s- ը չի մատակարարվում:

խաղը ( s , r [ , a ] )

Վերադարձնում է այն դիրքը, որտեղ պարունակում է կանոնավոր արտահայտություն r , կամ 0, եթե չկա, եւ սահմանում է RSTART- ի եւ RLENGTH- ի արժեքները: Նշենք, որ փաստարկի կարգը նույնն է, ինչ օպերատորն է: Եթե ​​պարունակվում է զանգվածը , ապա մաքրվում է, ապա տարրերը 1-ից մինչեւ n- ը լցված են s- ի մասերի հետ, որոնք համապատասխանում են համապատասխան պարֆունկցիոնալ ենթահամակարգին: A- ի 0-րդ տարրը պարունակում է ամբողջ պարբերական արտահայտությամբ r- ը :

պառակտումը ( s , a [ , r ] )

Պարամետրը պարունակում է պարբերական արտահայտության r , եւ վերադարձնում դաշտերի թիվը: Եթե r- ը բացակայում է, ապա փոխարենը օգտագործվում է FS- ը: Առաջին զանգվածը մաքրվում է: Պառակտումը նույնն է զգում դաշտի պառակտմանը, որը նկարագրված է վերեւում:

sprintf ( fmt , արտահայտված ցանկ )

Պատճենները ցուցակի ցուցակը համապատասխանում է fmt եւ վերադարձնում է արդյունքում տողը:

ստտրոնում ( փող )

Ուսումնասիրում է str , եւ վերադարձնում է իր թվային արժեքը: Եթե str սկսվում է առաջատար 0-ից , strtonum () ենթադրում է, որ str- ը octal- ն է: Եթե str- ը սկսվում է առաջատար 0x կամ 0X- ով , strtonum () ենթադրում է, որ str- ը hexadecimal թվ է:

ենթաբաժին ( r , s [ , t ] )

Ճիշտ այնպես, ինչպես gsub () , բայց փոխարինվում է միայն առաջին համապատասխանող ենթագրերը:

substr ( s , i [ , n ] )

Վերադարձնում է i- ից սկսվող առավելագույն n -character substring- ը: Եթե n -ը բացակայում է, ապա մնացածը օգտագործվում է:

tolower ( str )

Վերադարձնում է լարային str- ի պատճենը, բոլոր վերը նշված նիշերը, որոնք թարգմանվում են համապատասխան ստորին դեպքերում: Ոչ այբբենական նիշերը մնացել են անփոփոխ:

տուփեր ( փող )

Վերադարձնում է լարային str- ի պատճենը, բոլոր ստորին նիշերը վերափոխվում են իրենց համապատասխան վերին համակցված գործընկերներին: Ոչ այբբենական նիշերը մնացել են անփոփոխ:

Ժամկետային գործառույթներ

Քանի որ AWK ծրագրերի առաջնային օգտագործման մեկնարկը մշակում է ժամանակի կնիքի տեղեկությունները պարունակող տեղեկամատյան ֆայլեր, gawk տրամադրում է ժամանակի դրոշմանիշների ձեռքբերման եւ ձեւավորման համար հետեւյալ գործառույթները:

mktime ( datespec )

Rurns datespec- ը նույն ձեւի ժամանակի կնիքով, ինչպես վերադարձվել է systime () : The datespec- ը YYYY MM DD HH MM SS [DST] ձեւի տող է: Տողերի բովանդակությունը վեց կամ եօթն թվեր է, որոնք համապատասխանում են համապատասխանաբար ամբողջ տարվա, ներառյալ `1-ից 12-ը, ամսվա 1-ից մինչեւ 31-ը, օրվա ժամը 1-ից մինչեւ 31-ը, օրվա ժամը 0-ից մինչեւ 23-ը, րոպեն 0-ից 59-ը, երկրորդը `0-ից 60-ը, եւ ընտրովի ցերեկային լույսի դրոշը: Այդ թվերի արժեքները չպետք է նշված լինեն նշված միջակայքում. օրինակ, 1 ժամից 1 ժամ նշանակում է կեսգիշերից 1 ժամ առաջ: Ծագման-զրոյական Գրիգորյան օրացույցը ենթադրվում է 0 տարի նախորդ տարվա 0-ի եւ նախորդ տարվա -1-ի հետ: Ժամանակը ենթադրվում է տեղական ժամային գոտում: Եթե ​​լուսային դրոշը դրական է, ապա ժամանակը պետք է լինի ցերեկային ժամ: եթե զրոյական է, ժամանակն ընդունված է ստանդարտ ժամանակի. եւ եթե բացասական (կանխադրված), mktime () փորձ է որոշում, թե արդյոք օրվա խնայողության ժամանակն ուժի մեջ է տվյալ ժամանակի համար: Եթե datepec- ը չի պարունակում բավարար տարրեր կամ արդյունքի ժամկետը դուրս է, mktime ()- ը վերադարձնում է -1:

strftime ( [ ֆորմատի [ , ժամանակային նշան ]] )

Ֆորմատների ժամանակացույցը ըստ ֆորմատով ճշգրտման : Ժամկետը պետք է լինի նույն ձեւով, որը վերադարձվում է systime () : Եթե ժամանակահատվածը բացակայում է, ապա կիրառվում է օրվա ընթացիկ ժամանակը: Եթե ձեւաչափը բացակայում է, ապա օգտագործվում է ամսաթվի (1) ելքի համարժեք ձեւաչափ: Տեսեք ANSI C- ի strftime () ֆունկցիայի առանձնահատկությունները ֆորմատի փոխակերպումների համար, որոնք երաշխավորված են մատչելի: Հասարակական տիրույթը strftime- ի համար (3) եւ նրա համար նախատեսված մարդ էջը գալիս է gawk- ի հետ : եթե այդ տարբերակը օգտագործվել է gawk կառուցելու համար, ապա այդ մարդ էջում նկարագրված բոլոր վերափոխումները հասանելի են գաջի:

systime ()

Վերադարձնում է օրվա ընթացիկ ժամանակահատվածը, քանի որ Epoch- ից սկսած վայրկյանների թիվը (1970-01-01 00:00:00 UTC) POSIX համակարգերում:

Bit մանիպուլյացիաների գործառույթները

Gawk- ի 3.1 տարբերակից սկսած, առկա են հետեւյալ բիթային մանիպուլյացիան գործառույթները: Նրանք աշխատում են փոխակերպել երկակի ճշգրտության լողացող միավորի արժեքները չստորագրված երկար թվերով, գործելով, ապա արդյունքը վերափոխել լողացող կետ: Գործառույթներն են `

եւ ( v1 , v2 )

Վերադարձեք բիտին եւ v1- ի եւ v2- ի կողմից տրամադրված արժեքները:

compl ( val )

Վերադարձնել հսկիչի բիտի հավելումը:

lshift ( val , count )

Վերադարձրեք VAL- ի արժեքը, ձախ ձգան հաշվարկի բիթերով:

կամ ( v1 , v2 )

Վերադարձրեք v1 եւ v2- ի կողմից տրամադրված արժեքների կամ հակառակ կողմի OR- ի արժեքները:

rshift ( val , count )

Վերադարձնել արժեքի արժեքը, տեղափոխել ճիշտ հաշվարկային բիթեր:

xor ( v1 , v2 )

Վերադարձեք բիտին v1 եւ v2- ի կողմից տրամադրված արժեքների XOR- ը:

Միջազգայնացման գործառույթներ

Gawk- ի 3.1 տարբերակից սկսած, ձեր AWK ծրագրի շրջանակներում կարող են օգտագործվել հետեւյալ գործառույթները `գործարկել ժամանակային տողերը: Լրիվ մանրամասների համար տես GAWK: Արդյունավետ AWK ​​ծրագրավորում :

bindtextdomain ( գրացուցակ [ , տիրույթ ] )

Հատկորոշում է այն գրացուցակը, որտեղ gawk- ն փնտրում է .mo ֆայլերը, եթե դրանք չեն կամ չեն կարող տեղադրվել `` «ստանդարտ» կետերում (օրինակ `փորձարկման ժամանակ): Այն վերադարձնում է այն դիրեկտորիան, որտեղ տիրույթը `` «պարտավորված»:

Նախնական տիրույթը TEXTDOMAIN- ի արժեքն է: Եթե դիրեկտորն է null տողը ( "" ), ապա bindtextextain () վերադարձնում է տվյալ տիրույթում ընթացիկ պարտավորվածությունը:

dcgettext ( string [ , տիրույթ [ , կատեգորիա ]] )

Վերադարձնում է տեքստային տիրույթի տիրույթի տողը թարգմանության տեղական դասակարգի համար : Դիրքի համար լռելյայն արժեքը TEXTDOMAIN- ի ընթացիկ արժեքն է: Կարգի համար լռելյայն արժեքը «LC_MESSAGES» է :

Եթե դասակարգի արժեք եք ներկայացնում, ապա այն պետք է լինի GAWK- ում նկարագրված տեղական կատեգորիաներից մեկին հավասար տող: Արդյունավետ AWK ​​Ծրագրավորում : Դուք պետք է նաեւ տրամադրեք տեքստային տիրույթ: Օգտագործեք TEXTDOMAIN, եթե ցանկանում եք օգտագործել ընթացիկ տիրույթը:

dcngettext ( string1 , string2 , թիվ [ , տիրույթ [ , կատեգորիա ]] )

Վերադարձնում է տողերի տիրույթի տիրույթում string1 եւ string2 թարգմանության համար օգտագործվող բազմակի ձեւը, տեղական կատեգորիայի կատեգորիայի համար : Դիրքի համար լռելյայն արժեքը TEXTDOMAIN- ի ընթացիկ արժեքն է: Կարգի համար լռելյայն արժեքը «LC_MESSAGES» է :

Եթե դասակարգի արժեք եք ներկայացնում, ապա այն պետք է լինի GAWK- ում նկարագրված տեղական կատեգորիաներից մեկին հավասար տող: Արդյունավետ AWK ​​Ծրագրավորում : Դուք պետք է նաեւ տրամադրեք տեքստային տիրույթ: Օգտագործեք TEXTDOMAIN, եթե ցանկանում եք օգտագործել ընթացիկ տիրույթը:

Օգտագործողի կարգաբերված ֆունկցիաները

AWK- ի գործառույթները սահմանվում են հետեւյալ կերպ.

ֆունկցիայի անունը ( պարամետրերի ցանկ ) { statements }

Գործառույթները կատարվում են այն ժամանակ, երբ դրանք կոչվում են արտահայտությունների մեջ, կամ նախշերով կամ գործողություններում: Ֆունկցիայի զանգի մեջ ներկայացված փաստական ​​պարամետրերը օգտագործվում են գործառույթում հայտարարված պաշտոնական պարամետրերը նախադրելու համար: Մասերը փոխանցվում են հղումով, այլ փոփոխականները անցնում են արժեքով:

Քանի որ գործառույթները սկզբնապես չեն հանդիսացել AWK լեզվի մի մասը, տեղական փոփոխականների դրույթը բավական անշնորհակալ է. Դրանք պարամետրերի ցուցակի մեջ լրացուցիչ պարամետրեր են հայտարարվում: Կոնվենցիան, ըստ էության պարամետրերի, պարամետրերի ցանկում առանձնացնել տեղական փոփոխականները իրական պարամետրերից: Օրինակ:

ֆունկցիան f (p, q, a, b) # a եւ b տեղական են {...} / abc / {...; f (1, 2); ...}

Ձախ փակագծերը ֆունկցիոնալ զանգի մեջ պահանջվում են անհապաղ հետեւել ֆունկցիայի անվանմանը, առանց միջամտելու սպիտակ տարածքի: Սա խուսափելու է կապակցման օպերատորի հետ սինթետիկ անորոշությունից: Այս սահմանափակումն ընդգրկված չէ վերը նշված ներկառուցված գործառույթների նկատմամբ:

Գործառույթները կարող են զանգահարել միմյանց եւ կարող են հանգստանալ: Ֆունկցիոնալ պարամետրերը, որոնք օգտագործվում են որպես տեղական փոփոխականներ, սկզբնավորվում են նարնջագույն տողից եւ գործառույթի հրատարակումից հետո զրոյական թիվը:

Օգտագործեք վերադարձի արժեքը `գործառույթից արժեք վերադարձնելու համար: Վերադարձի արժեքը որոշված ​​չէ, եթե որեւէ արժեք չի տրամադրվում, կամ եթե գործառույթը վերադառնում է `« ընկնում »` վերջ:

Եթե լոտը տրամադրված է, ապա gawk- ը զգուշացնում է անսահման գործառույթների կոչման մասին, երբ տեղի է ունենում ժամանակի փոխարեն: Ժամանակի ընթացքում անվերջ ֆունկցիա կանչելը ճակատագրական սխալ է:

Ֆունկցիան կարող է օգտագործվել գործողության վայրում:

ԴՆՆՈՒՄ ԵՆ ՆՈՐ ՖՈՒՆԿՑԻԱՆԵՐԸ

Սկսած 3.1-ի տարբերակով, դուք կարող եք դինամիկորեն ավելացնել նոր ներկառուցված գործառույթներ վազող գավթի թարգմանչի համար: Լրիվ մանրամասները դուրս են այս ձեռնարկի էջի շրջանակից. տես GAWK: Արդյունավետ AWK ​​ծրագրավորում մանրամասների համար:

ընդլայնում ( օբյեկտ , գործառույթ )

Դինամիկորեն կապում է օբյեկտի անվան տակ գտնվող համօգտագործվող օբյեկտի ֆայլը եւ գործարկելու այդ օբյեկտի գործառույթը `նախապատրաստումը կատարելու համար: Սրանք պետք է տրամադրվեն որպես տողեր: Վերադարձնում է գործառույթով վերադարձված արժեքը:

Այս գործառույթը տրամադրվում եւ փաստաթղթավորված է GAWK: Արդյունավետ AWK ​​ծրագրավորման , բայց ամեն ինչ, այս հնարավորության մասին, ամենայն հավանականությամբ, կփոխվի հաջորդ թողարկումում: Մենք խրախուսում ենք, որ դուք չեք օգտագործում այս հնարավորությունը որեւէ բան այն մասին, որ դուք չեք պատրաստվում կրկնել:

SIGNALS

pgawk ընդունում է երկու ազդանշան: SIGUSR1- ը առաջացնում է պրոֆիլի ֆունկցիայի եւ գործառույթների զանգի խափանում , որը կամ awkprof.out- ը կամ ինչ ֆայլ է անվանվել - պրոֆիլի ընտրանքով: Այնուհետեւ շարունակում է վազել: SIGHUP- ն առաջացնում է այն հեռացնել պրոֆիլը եւ գործառույթը զանգի բաշխումը եւ այնուհետեւ ելքը:

Օրինակներ

Տպեք եւ դասավորեք բոլոր օգտագործողների մուտքի անունները. BEGIN {FS = ":"} {print $ 1 | {sort nws}} ֆայլերի մեջ գիծ: {nlines ++} END {print nlines} Նախատեք յուրաքանչյուր տողը ֆայլում իր համարով. {print FNR, $ 0} համընկնող եւ գծի համարը (թեմայի փոփոխություն) {print NR, $ 0}

Ներքինացում

Լարային հանգույցները երկակի մեջբերումների մեջ ներառված նիշերի հաջորդականությունն են: Ոչ անգլերեն լեզվով խոսակցական միջավայրերում հնարավոր է նշել «AWK» ծրագրում տողեր, որոնք պահանջում են թարգմանել հայրենի բնական լեզվով: Նման տողերը նշվում են «AWK» ծրագրում, որը նշում է առաջատարը `(` `` '): Օրինակ,

gawk 'BEGIN {Տպել "բարեւ, աշխարհ"}'

միշտ հրճվում է աշխարհը : Սակայն,

gawk 'BEGIN {Տպել _ "hello, world"}'

կարող է տպել bonjour, monde Ֆրանսիայում:

Կան մի քանի քայլեր, որոնք ներգրավված են տեղայնացված AWK ծրագրի մշակման եւ գործարկման մեջ:

1.

Ավելացրեք BEGIN գործողություն, որը նշանակում է TEXTDOMAIN փոփոխականին նշանակելու տեքստային տիրույթը ձեր ծրագրի հետ կապված անուն:


BEGIN {TEXTDOMAIN = "myprog"}

Սա թույլ է տալիս gawk- ին գտնել ձեր .mo ֆայլը ձեր ծրագրի հետ: Առանց այս քայլի, gawk օգտագործում է հաղորդագրությունների տեքստային տիրույթը, որը, ամենայն հավանականությամբ, չի պարունակում թարգմանություններ ձեր ծրագրի համար:

2.

Նշեք բոլոր տողերը, որոնք պետք է թարգմանվեն առաջատար գծերը:

3.

Անհրաժեշտության դեպքում օգտագործել ձեր dcgettext () եւ / կամ bindtextdomain () գործառույթները ձեր ծրագրում:

4.

Run gawk - ծաղրածու- m myprog.awk> myprog.po, որպեսզի ստեղծեք a .po ֆայլ ձեր ծրագրի համար:

5.

Ապահովել համապատասխան թարգմանություններ եւ կառուցել եւ տեղադրել համապատասխան .mo ֆայլ:

Միջազգայինացման առանձնահատկությունները մանրամասն նկարագրված են GAWK- ում: Արդյունավետ AWK ​​ծրագրավորում :

Posix Համատեղելիություն

Gawk- ի հիմնական նպատակն է համատեղելիությունը POSIX ստանդարտին, ինչպես նաեւ UNIX awk- ի վերջին տարբերակի հետ: Այս նպատակով, gawk- ը ներառում է հետեւյալ օգտագործողի տեսանելի առանձնահատկությունները, որոնք չեն նկարագրված AWK գրքում, սակայն հանդիսանում են awk- ի Bell Laborators- ի տարբերակը եւ գտնվում են POSIX ստանդարտում:

Գիրքը ցույց է տալիս, որ հրամանի տող փոփոխական հանձնարարությունը տեղի է ունենում, երբ awk- ն այլ կերպ բացվի փաստարկը որպես ֆայլ, որը BEGIN- ի բլոկից հետո կատարվում է: Այնուամենայնիվ, նախկինում կատարված աշխատանքներում, երբ նման առաջադրանք առաջացավ ցանկացած ֆայլի անունից, հանձնարարությունը տեղի ունեցավ մինչեւ BEGIN- ի բլոկը գործարկելու համար: Դիմումները դիմել են այս `« առանձնահատկությունից »կախվածության վրա: Երբ awk- ը փոխվել էր համապատասխանելու իր փաստաթղթերին, փոփոխականներ նշանակելու համար -v տարբերակը հավելվածի առաջադրվելուց առաջ ավելացվել է այնպիսի ծրագրերի համար, որոնք կախված էին հին վարքից: (Այս առանձնահատկությունը պայմանավորված էր թե Bell Laboratories- ի, թե GNU մշակողների կողմից):

The -W տարբերակը իրականացման հատուկ առանձնահատկություններ է POSIX ստանդարտից:

Արգումենտները մշակելիս gawk օգտագործում է հատուկ տարբերակ `« - »` ազդանշանների վերջը ազդարարելու համար: Համատեղելիության ռեժիմում այն ​​զգուշացնում է, բայց այլ կերպ անտեսում է անորոշ տարբերակներ: Նորմալ շահագործման դեպքում նման փաստարկները փոխանցվում են AWK ծրագրի մշակման համար:

AWK- ի գիրքը չի սահմանում srand- ի վերադարձի արժեքը: POSIX ստանդարտը վերադարձնում է օգտագործած սերմը, թույլ տալով պատահական թվային հաջորդականությունների հետեւել: Հետեւաբար, gawk- ում srand () վերադարձնում է նաեւ ընթացիկ սերմը:

Այլ նոր առանձնահատկություններ. Բազմակի տարբերակների օգտագործումը (MKS awk- ից ); ENVIRON զանգվածը; \ a եւ \ v փախուստի հաջորդականությունները (նախապես արվել են gawk- ում եւ վերածվել Bell Laboratories- ի տարբերակին); tolower () եւ toupper () ներկառուցված գործառույթները (Bell Laboratories- ի տարբերակից); եւ ANSI C- ի փոխակերպման առանձնահատկությունները printf- ում (նախ `Bell Laboratories- ի տարբերակով):

Պատմական առանձնահատկությունները

Գոյություն ունի աջակցություն պատմական AWK- ի իրականացման երկու առանձնահատկություն: Նախ, հնարավոր է զանգահարել երկարությունը () ներկառուցված գործառույթը ոչ միայն առանց փաստարկի, բայց նույնիսկ առանց պարբերականների: Այսպիսով,

a = երկարություն # Սուրբ Algol 60, Batman!

նույնն է, ինչ որ մեկը

a = երկարություն ()
a = երկարություն ($ 0)

Այս առանձնահատկությունը նշվում է որպես POSIX ստանդարտում « հերքված» , եւ gawk- ը նախազգուշացնում է այն օգտագործելու մասին, եթե - lint հրամանի տողում նշված է:

Մյուս առանձնահատկությունն այն է, թե շարունակություն, թե ընդմիջում հայտարարություններ, որոշ ժամանակ մարմնից դուրս, կամ անել հանգույց: Ավանդական AWK- ի կիրառումը վերաբերում է նման օգտագործմանը, որը համարժեք է հաջորդ հայտարարությանը: Gawk- ը սատարում է այս օգտագործումը, եթե ավանդաբար նշված է:

GNU ընդլայնում

Gawk- ը ունի POSIX awk- ի մի շարք ընդարձակումներ: Նրանք նկարագրված են այս բաժնում: Այստեղ նկարագրված բոլոր ընդարձակումները կարող են անջատվել ` գավթի հրավիրելով` ավանդական տարբերակով:

Հետեւյալ առանձնահատկությունները gawk չեն հասանելի POSIX awk .

*

-f-option- ով նշված ֆայլերի համար ուղիղ որոնում չի կատարվում: Հետեւաբար, AWKPATH միջավայրի փոփոխականն առանձնահատուկ չէ:

*

\ X փախուստի հաջորդականությունը: (Անջատված - posix ):

*

The fflush () գործառույթը: (Անջատված - posix ):

*

Հետագա գծերը շարունակելու ունակությունը : եւ : (Անջատված - posix ):

*

AWK- ի ծրագրերում օկտացիոն եւ տասնութերորդ կայուն հաստատուններ:

*

ARGIND , BINMODE , ERRNO , LINT , RT եւ TEXTDOMAIN փոփոխականները հատուկ չեն:

*

IGNORECASE փոփոխականն ու դրա կողմնակի ազդեցությունները հասանելի չեն:

*

FIELDWIDTHS փոփոխական եւ ֆիքսված լայնությամբ դաշտային պառակտումը:

*

PROCINFO զանգվածը հասանելի չէ:

*

RS- ի օգտագործումը որպես կանոնավոր արտահայտություն:

*

I / O- ի վերահասցեավորման համար հատուկ ֆայլի անունները չեն ճանաչվում:

*

| | Համագործակցային գործընթացների ստեղծման համար:

*

Առանձին նիշերը բաժանելու ունակությունը, օգտագործելով զրոյի տողը որպես FS- ի արժեք եւ որպես երրորդ փաստարկ, պառակտելու համար () :

*

Լրացուցիչ երկրորդ փաստարկը close () գործառույթին:

*

Խաղի () գործառույթի ընտրովի երրորդ փաստարկը:

*

Օգտագործելու կարողությունը դիրեկտիվ առանձնահատկություններ printf- ի եւ sprintf- ի հետ () :

*

Ջնջել զանգվածի օգտագործումը զանգվածի ամբողջ բովանդակությունը ջնջելու համար:

*

Հաջորդ ֆայլի օգտագործումը հրաժարվել ընթացիկ ներածման ֆայլի վերամշակումը:

*

() , () , () , () , Binttextdomain () , compl () , dcgettext () , gensub () , lshift () , mktime () կամ () , rshift () , strftime () , strtonum () , systime () եւ xor () գործառույթները:

*

Տեղակայելի տողեր:

*

Adding նոր ներկառուցված գործառույթները դինամիկ extension () գործառույթի հետ:

AWK- ի գիրքը չի սահմանում close () ֆունկցիայի վերադարձի արժեքը: Gawk- ի փակումը () վերադարձնում է ելքային ֆայլը կամ խողովակը փակելիս արժեքը վերադարձնում է fclose (3) կամ pclose (3): Այն մուտքի խողովակի փակման ժամանակ վերադարձնում է գործընթացի ելքի կարգավիճակը: Վերադարձի արժեքը -1 է, եթե նշված ֆայլը, խողովակը կամ համանման գործընթացը բացված չէ վերահասցեավորմամբ:

Երբ gawk- ը կոչվում է « ավանդական» տարբերակ, եթե F- ի տարբերակն է f- ը `` `` `ապա FS- ն սահմանվում է ներդիրի բնույթ: Նկատի ունեցեք, որ gawk -F \ t ... տեքստը պարզապես առաջացնում է shell- ը մեջբերում `« t », եւ չի անցնում« \ t »-ից -F տարբերակը: Քանի որ սա բավականին տգեղ հատուկ դեպք է, դա կանխադրված վարքագիծ չէ: Այս վարքագիծը նույնպես չի առաջանում, եթե posix- ը նշված է: Հատկապես ստեղնային բնույթ ստանալու համար որպես դաշտային տարանջատիչ, լավագույնն է օգտագործել միայնակ մեջբերումներ. Gawk -F '\ t' ... :

Տեսեք այլ հրամաններ ` սպասեք , lp , ամբողջական , execv , getfacl , ioctl , uniq , rmmod , pvcreate , rsh , unix2dos , cal , fs , cd , iwpriv , swapon , autofs , talk , motd , ազատ , lpr , execl , fdisk , at , ով , iwconfig , ifconfig , vgdisplay , բաց , lsmod , ntohs , mailq , kill , wtmp