Pata maagizo ya Linux - gawk

Jina

gawk - muundo wa skanning na lugha ya usindikaji

Sahihi

gawk [Chaguzi za mtindo wa POSIX au GNU] -f programu-faili [ - ] faili ...
gawk [chaguzi za mtindo wa POSIX au GNU] [ - ] faili ya maandishi ya programu ...

pgawk [chaguzi za mtindo wa POSIX au GNU] -f programu-faili [ - ] faili ...
pgawk [chaguo za mtindo wa POSIX au GNU] [ - ] faili ya maandishi ya programu ...

Maelezo

Gawk ni utekelezaji wa Mradi wa GNU wa lugha ya programu ya AWK. Inafanana na ufafanuzi wa lugha katika POSIX 1003.2 Lugha ya Amri na Utilities Standard. Toleo hili kwa upande wake linategemea maelezo katika lugha ya AWK ya Programu , na Aho, Kernighan, na Weinberger, pamoja na vipengele vya ziada vinavyopatikana katika toleo la System V Release 4 la UNIX awk . Gawk pia hutoa upanuzi wa awksi za hivi karibuni wa Maabara ya Bell, na upanuzi maalum wa GNU.

Pgawk ni toleo la profiling la gawk . Inafanana kwa kila njia ya kupiga gawk , isipokuwa kuwa mipango inaendesha polepole zaidi, na inatoa moja kwa moja maelezo ya utekelezaji katika awkprof.out ya faili wakati imefanywa. Tazama chaguo- chafu , chini.

Mstari wa amri una chaguo za kujitolea mwenyewe, Nakala ya mpango wa AWK (ikiwa haipatikani kupitia chaguo -f au -file ), na maadili yanapatikana katika vigezo vya AWK vya ARGC na ARGV .

Aina ya Chaguo

Chaguo za Gawk inaweza kuwa chaguzi za jadi za POSIX moja au chaguzi za muda mrefu za GNU. Chaguo za POSIX kuanza kwa moja `` - '', wakati chaguo ndefu huanza na `` - ''. Chaguo za muda mrefu hutolewa kwa vipengele vyote vya GNU na vipengele vyenye mamlaka ya POSIX.

Kufuatilia kiwango cha POSIX, chaguo-maalum hutolewa kupitia hoja kwa -W chaguo. Chaguzi nyingi -W zinaweza kutolewa Kila chaguo -W ina chaguo la muda mrefu, kama ilivyo hapo chini. Majadiliano ya chaguo ndefu hujiunga na chaguo kwa = ishara, bila nafasi za kuingilia kati, au zinaweza kutolewa katika hoja inayofuata ya mstari wa amri. Chaguzi za muda mrefu zinaweza kufunguliwa, kwa muda mrefu kama kifunguo kinabakia kuwa cha pekee.

Chaguo

Gawk inakubali chaguzi zifuatazo, zimeorodheshwa kwa herufi.

-F fs

fs-separator fs Tumia fs kwa mgawanyiko wa shamba la pembejeo (thamani ya mabadiliko ya FS yaliyotafsiriwa).

-v var = val

- onyesha var = val Weka val thamani kwa variable var , kabla ya utekelezaji wa mpango huanza. Vigezo vya kutofautiana hupatikana kwenye blogu ya BEGIN ya mpango wa AWK.

-f programu-faili

--fafanua -mpango wa faili Soma chanzo cha mpango wa AWK kutoka kwa faili -faili ya faili , badala ya hoja ya kwanza ya mstari wa amri. Chaguzi nyingi -f (au -file ) zinaweza kutumika.

-mf NNN

-mr NNN Weka mipaka mbalimbali ya kumbukumbu kwenye NNN thamani. F flag huweka idadi kubwa ya mashamba, na r flag huweka ukubwa wa kurekodi rekodi. Bendera hizi mbili na chaguo-- m ni kutoka toleo la utafiti wa Bell Laboratories la UNIX awk . Wao hupuuzwa na gawk , kwani gawk haina mipaka iliyotanguliwa.

-Washiriki

-Wa jadi

-

- Run ya muda katika hali ya utangamano . Katika hali ya utangamano, gawk hufanyika sawa na UNIX awk ; hakuna upanuzi maalum wa GNU unaotambuliwa. Matumizi ya - matoleo yanapendelea zaidi ya aina nyingine za chaguo hili. Ona GNU EXTENSIONS , chini, kwa maelezo zaidi.

-Wewe copyleft

-W hati miliki

--copyleft

--copyright Kuchapisha toleo fupi la ujumbe wa hakimiliki wa GNU juu ya pato la kawaida na kuondoka kwa ufanisi.

-W toleo la uchafu [ = faili ]

- dump-variables [ = faili ] Chapisha orodha iliyopangwa ya vigezo vya kimataifa, aina zao na maadili ya mwisho ya faili . Ikiwa hakuna faili inayotolewa, gawk inatumia faili inayoitwa awkvars.out katika saraka ya sasa.

Kuwa na orodha ya vigezo vyote vya kimataifa ni njia nzuri ya kuangalia makosa ya uchapaji katika programu zako. Unaweza pia kutumia chaguo hili ikiwa una programu kubwa yenye kazi nyingi, na unataka kuwa na hakika kwamba kazi zako hazitumii vigezo vya kimataifa ambavyo unamaanisha kuwa wa ndani. (Hii ni makosa rahisi sana kufanya na majina rahisi ya kawaida kama i , j , na kadhalika.)

-W msaada

-W matumizi

--help

- Piga machapisho mafupi ya chaguo zilizopo kwenye pato la kawaida. (Kwa Viwango vya Coding Coding , chaguo hizi husababisha kuondoka kwa haraka, kwa mafanikio.)

-Wavu [ = ya kuuawa ]

- [ = kufaa ] Kutoa maonyo kuhusu ujenzi ambao ni wa kushangaza au yasiyo ya portable kwa utekelezaji mwingine wa WWK. Kwa hoja ya hiari ya maonyo ya maafa , nywele huwa makosa mabaya. Hii inaweza kuwa kubwa, lakini matumizi yake itahamasisha maendeleo ya mipango safi ya AWK.

-W wa zamani wa rangi

- umri wa miaka Kutoa onyo kuhusu vifaa ambavyo haviwezekani kwa toleo la awali la Unix awk .

-W gen-po

--gen-po Scan na upangilie mpango wa AWK, na uzalishe faili ya faili ya GNU .po kwenye pato la kawaida na kuingizwa kwa masharti yote yanayojazwa katika programu. Mpango wenyewe haufanyi. Tazama usambazaji wa kupata GNU kwa maelezo zaidi juu ya files .po .

-W si data-decimal

data -non-decimal kutambua maadili octal na hexadecimal katika data ya pembejeo. Tumia chaguo hili kwa tahadhari kubwa!

-Kujiunga

- postx Hii inarudi hali ya utangamano , na vikwazo vya ziada vifuatavyo:

*

Mipangilio ya \ x ya kuepuka haijatambuliwa.

*

Nafasi tu na tab hufanya kazi kama watenganishaji wa shamba wakati FS imewekwa kwenye nafasi moja, lineline haifai.

*

Huwezi kuendelea na mistari baada ? na :.

*

Kazi ya sanjari ya kazi ya nenosiri haitambui.

*

Waendeshaji ** na ** = hawezi kutumika mahali pa ^ na ^ = .

*

Kazi ya fflush () haipatikani.

-W profile [ = prof_file ]

--profile [ = prof_file ] Tuma data ya kufuta profaili . Kichapishaji ni awkprof.out . Wakati wa kukimbia na gawk , wasifu ni tu `` iliyochapishwa '' toleo la programu. Wakati wa kukimbia na pgawk , wasifu una mahesabu ya utekelezaji wa kila taarifa katika programu katika margin ya kushoto na makosa ya kazi ya kazi kwa kila kazi iliyofafanuliwa na mtumiaji.

-W upungufu wa muda

- wakati-wazima Wezesha matumizi ya maneno ya muda kwa kulinganisha mara kwa mara (angalia Maneno ya kawaida , chini). Maneno ya muda mfupi hayakuwa ya kawaida katika lugha ya AWK. Kiwango cha POSIX kiliwaongeza, kufanya awk na egrep sawa na kila mmoja. Hata hivyo, matumizi yao yanaweza kuvunja mipango ya zamani ya AWK, hivyo gawk huwapa tu ikiwa ni ombi kwa chaguo hili, au wakati -posix inavyoelezwa .

-W source chanzo -maandishi

- Nakala ya mpango-maandishi Kutumia programu-maandishi kama AWK mpango chanzo code. Chaguo hili inaruhusu kuingiliana rahisi kwa kazi za maktaba (kutumika kupitia chaguo -f na -file ) na msimbo wa chanzo ulioingia kwenye mstari wa amri. Inalenga hasa kwa mipango ya AWK ya kati na kubwa iliyotumiwa katika scripts za shell.

-W toleo

- Toleo la habari ya magazeti ya nakala hii ya gawk kwenye pato la kawaida. Hii ni muhimu hasa kwa kujua kama nakala ya sasa ya gawk kwenye mfumo wako inakaribia kwa heshima kwa chochote Free Software Foundation inasambaza. Hii pia ni muhimu wakati wa kutoa taarifa za mende. (Kwa Viwango vya Coding Coding , chaguo hizi husababisha kuondoka kwa haraka, kwa mafanikio.)

- Ishara mwisho wa chaguo. Hii ni muhimu kuruhusu hoja zaidi kwenye mpango wa AWK yenyewe kuanza na `` - ''. Hii ni hasa kwa ajili ya mshikamano na mkataba wa kusambaza unaotumiwa na programu nyingi za POSIX.

Kwa hali ya utangamano, chaguzi nyinginezo zimewekwa kama batili, lakini vinginevyo hazikubaliki. Katika operesheni ya kawaida, kwa muda mrefu kama maandishi ya programu yamepatikana, chaguo haijulikani hupitishwa kwenye mpango wa AWK katika safu ya ARGV kwa usindikaji. Hii ni muhimu sana kwa kuendesha mipango ya AWK kupitia mfumo wa "translator" wa "` #! ".

Usimamizi wa AWK PROGRAM

Mpango wa AWK una mlolongo wa kauli-hatua ya kauli na ufafanuzi wa kazi ya hiari.

mfano { maagizo ya hatua }

Jina la kazi ( orodha ya parameter ) { taarifa }

Gawk kwanza inasoma chanzo cha programu kutoka faili- s (programu) ikiwa imeelezwa, kutoka kwa hoja hadi -source , au kutoka kwenye hoja ya kwanza isiyo ya chaguo kwenye mstari wa amri. Chaguo -f na- rasilimali inaweza kutumika mara nyingi kwenye mstari wa amri. Gawk inasoma maandishi ya programu kama maandishi yote ya faili na programu ya mstari wa amri yalipatanishwa pamoja. Hii ni muhimu kwa ajili ya kujenga maktaba ya kazi za AWK, bila ya kuwashirikisha katika kila mpango mpya wa AWK ambao hutumia. Pia hutoa uwezo wa kuchanganya kazi za maktaba na mipango ya mstari wa amri.

Mabadiliko ya mazingira AWKPATH yanataja njia ya kutafuta wakati unapopata faili za chanzo ambazo zimeitwa na -f chaguo. Ikiwa hali hii haipo, njia ya default ni ".: / Usr / local / share / awk" . (Saraka halisi inaweza kutofautiana, kulingana na jinsi gawk ilijengwa na imewekwa.) Ikiwa jina la faili lililopewa fursa ya -f ina tabia `` / '', hakuna utafutaji wa njia unaofanywa.

Gawk hufanya mipango ya AWK kwa utaratibu uliofuata. Kwanza, kazi zote za kutofautiana zilizochaguliwa kupitia chaguo -v zinafanywa. Kisha, gawk inakusanya programu katika fomu ya ndani. Kisha, gawk hutekeleza msimbo katika blogu ya BEGIN (ikiwa ni yoyote), na kisha itaendelea kusoma kila faili inayoitwa safu ya ARGV . Ikiwa hakuna faili zilizoitwa kwenye mstari wa amri, gawk inasoma pembejeo ya kawaida.

Ikiwa jina la faili kwenye mstari wa amri lina fomu var = val inachukuliwa kama kazi ya kutofautiana. Vuru variable huwekwa kwa thamani ya val . (Hii hutokea baada ya blogu yoyote ya BEGIN imetumika.) Kazi ya mstari wa amri ni muhimu sana kwa kugawa maadili yenye nguvu kwa vigezo vya AWK vinavyotumia kudhibiti jinsi pembejeo imevunjwa katika maeneo na kumbukumbu. Pia ni muhimu kwa kudhibiti hali ikiwa kupita nyingi zinahitajika juu ya faili moja ya data.

Ikiwa thamani ya kipengele fulani cha ARGV ni tupu ( "" ), gawk hupita juu yake.

Kwa kila rekodi katika pembejeo, vipimo vya gawk ili kuona ikiwa ni sawa na muundo wowote katika programu ya AWK. Kwa kila muundo ambayo rekodi inafanana, hatua inayohusiana inatekelezwa. Mwelekeo hupimwa ili waweze kutokea katika programu.

Hatimaye, baada ya pembejeo yote imechoka, gawk hutekeleza msimbo katika kuzuia END (ikiwa).

Vigezo, Kumbukumbu, na Mashamba

Vigezo vya AWK ni nguvu; huja kuwepo wakati wanapotumiwa kwanza. Maadili yao ni namba za kuelekea-kumweka au masharti, au zote mbili, kulingana na jinsi zinazotumiwa. AWK pia ina safu moja ya mwelekeo; safu na vipimo vingi vinaweza kufanywa. Vigezo kadhaa kabla hufafanuliwa huwekwa kama programu inaendesha; haya itaelezewa kama inahitajika na muhtasari hapa chini.

Kumbukumbu

Kwa kawaida, rekodi zinajitenga na wahusika wapya. Unaweza kudhibiti jinsi kumbukumbu zinapotengana na kugawa maadili kwa RS inayojengwa. Ikiwa RS ni tabia moja, tabia hiyo hutenganisha rekodi. Vinginevyo, RS ni kujieleza mara kwa mara. Nakala katika pembejeo ambayo inafanana na kujieleza mara kwa mara hutenganisha rekodi. Hata hivyo, katika hali ya utangamano, tabia ya kwanza ya thamani ya kamba yake hutumiwa kutenganisha rekodi. Ikiwa RS imewekwa kwenye kamba isiyo ya kawaida, basi rekodi zinajitenga na mistari tupu. Wakati RS imewekwa kwenye kamba isiyo ya nambari, tabia ya newline daima hufanya kama mgawanyiko wa shamba, pamoja na thamani yoyote ya FS inaweza kuwa nayo.

Mashamba

Kama kila rekodi ya pembejeo inasomwa, gawk inagawanya rekodi katika maeneo , kwa kutumia thamani ya tofauti ya FS kama mgawanyiko wa shamba. Ikiwa FS ni tabia moja, mashamba yanatengwa na tabia hiyo. Ikiwa FS ni kamba isiyofaa, basi kila tabia ya mtu binafsi inakuwa shamba tofauti. Vinginevyo, FS inatarajiwa kuwa na kujieleza kwa kawaida. Katika kesi maalum kwamba FS ni nafasi moja, mashamba yanatengwa na mipaka ya nafasi na / au tabo na / au majarida mapya. (Lakini angalia majadiliano ya - postposi , chini). KUMBUKA: Thamani ya IGNORECASE (angalia chini) pia huathiri jinsi mashamba yanagawanyika wakati FS ni kujieleza mara kwa mara, na jinsi kumbukumbu zinapotengana wakati RS ni maneno ya kawaida.

Ikiwa variable ya FIELDWIDTHS imewekwa kwenye orodha ya namba iliyojitenga nafasi, kila shamba inatarajiwa kuwa na upana wa upana, na gawk inagawanya rekodi kwa kutumia vipimo vilivyowekwa. Thamani ya FS imepuuzwa. Kuweka thamani mpya kwa FS inapungua matumizi ya FIELDWIDTHS , na kurejesha tabia ya default.

Kila shamba katika rekodi ya pembejeo inaweza kutajwa na nafasi yake, $ 1 , $ 2 , na kadhalika. $ 0 ni rekodi nzima. Mashamba haipaswi kutafakari na vikwazo:

n = 5
shika $ n

hubadilisha shamba la tano katika rekodi ya pembejeo.

NF ya kutofautiana imewekwa kwenye idadi ya mashamba katika rekodi ya pembejeo.

Marejeo ya mashamba yasiyopo (yaani mashamba baada ya $ NF ) yanazalisha kamba ya null. Hata hivyo, kusambaza uwanja usiopo (kwa mfano, $ (NF + 2) = 5 ) huongeza thamani ya NF , hujenga mashamba yoyote ya kuingilia kati na kamba isiyo ya thamani kama thamani yao, na husababisha thamani ya $ 0 ilipweke, pamoja na mashamba ya kutengwa na thamani ya OFS . Marejeo ya mashamba yaliyohesabiwa hasi yanasababisha kosa mbaya. Kuchochea NF husababisha maadili ya mashamba yaliyotangulia thamani mpya ya kupotea, na thamani ya $ 0 ilipatiwa, pamoja na mashamba yaliyotenganishwa na thamani ya OFS .

Kuweka thamani kwa shamba iliyopo husababisha rekodi nzima kujengwa wakati $ 0 imetajwa. Vile vile, kugawa thamani ya $ 0 husababisha rekodi ya kupasuliwa, kuunda maadili mapya kwa mashamba.

Vipengele vilivyojengwa

Vigezo vya kujengwa vya Gawk ni:

ARGC

Nambari ya hoja za mstari wa amri (hazijumuisha chaguzi za gawk , au chanzo cha programu).

ARGIND

Orodha katika ARGV ya faili ya sasa inachukuliwa.

ARGV

Sawa ya hoja ya mstari wa amri. Safu ni indexed kutoka 0 hadi ARGC - 1. Kubadili kwa nguvu maudhui ya ARGV inaweza kudhibiti faili zilizotumiwa kwa data.

BINMODE

Kwenye mifumo isiyo ya POSIX, inataja matumizi ya `` binary 'mode kwa wote faili I / O. Maadili ya Hesabu ya 1, 2, au 3, bayana kwamba faili za kuingiza, faili za pato, au faili zote, kwa mtiririko huo, zinapaswa kutumia I / O binary. Maadili ya pembe ya "r" , au "w" yanasema faili hizo za kuingiza, au faili za pato, kwa mtiririko huo, zinapaswa kutumia I / O binary. Maadili ya kamba ya "rw" au "wr" yanasema kwamba faili zote zinatakiwa kutumia I / O ya binary. Thamani nyingine yoyote ya kamba inachukuliwa kama "rw" , lakini inazalisha ujumbe wa onyo.

CONVFMT

Fomu ya uongofu kwa namba, "% .6g" , kwa default.

ENVIRON

Safu iliyo na maadili ya mazingira ya sasa. Safu ni indexed na vigezo vya mazingira, kila kipengele kuwa thamani ya variable hiyo (kwa mfano, ENVIRON ["HOME"] inaweza kuwa / nyumbani / arnold ). Kubadilisha safu hii haiathiri mazingira inayoonekana na mipango ambayo gawk huzalisha kupitia redirection au mfumo () kazi.

ERRNO

Ikiwa hitilafu ya mfumo hutokea ama kufanya redirection kwa linea , wakati wa kusoma kwa ajili ya linea , au wakati wa karibu () , basi ERRNO itakuwa na kamba inayoelezea kosa. Thamani ni chini ya tafsiri katika maeneo yasiyo ya Kiingereza.

FIELDWIDTHS

Orodha ya kujitenga nyeupe ya nafasi ya shambawidths. Itawekwa , gawk hupiga pembejeo katika maeneo ya upana wa kudumu, badala ya kutumia thamani ya tofauti ya FS kama mgawanyiko wa shamba.

JINA LA FAILI

Jina la faili ya pembejeo ya sasa. Ikiwa hakuna faili zilizowekwa kwenye mstari wa amri, thamani ya FILENAME ni `` - ''. Hata hivyo, FILENAME haijatambulika ndani ya blogu ya BEGIN (isipokuwa imewekwa na getline ).

FNR

Nambari ya rekodi ya pembejeo katika faili ya pembejeo ya sasa.

FS

Mgawanyiko wa shamba la pembejeo, nafasi kwa default. Angalia Fields , hapo juu.

IGNORECASE

Inadhibiti usikivu wa kesi ya kujieleza mara kwa mara na shughuli za kamba. Ikiwa IGNORECASE ina thamani isiyo ya sifuri, basi kulinganisha kamba na muundo unaofanana katika sheria, shamba linalogawanyika na FS , rekodi inayojitenga na RS , kujieleza mara kwa mara vinavyolingana na ~ na ! ~ , Na foluku () , gsub () , index () , mechi () , mgawanyiko () , na ndogo () yaliyojengewa kazi hupuuza kesi wakati wa kufanya shughuli za kujieleza mara kwa mara. KUMBUKA: Array subscripting haiathiri, wala kazi ya asort () haifanyi kazi.

Kwa hivyo, kama IGNORECASE haifanani na sifuri, / aB / inafanana na masharti yote "ab" , "aB" , "Ab" , na "AB" . Kama ilivyo na vigezo vyote vya AWK, thamani ya awali ya IGNORECASE ni sifuri, hivyo maneno yote ya mara kwa mara na shughuli za kamba ni kawaida nyeti. Chini ya Unix, kuweka kamili ya ISO 8859-1 Kilatini-1 hutumiwa wakati unapuuza kesi.

LINT

Hutoa udhibiti mkubwa wa chaguo - chaguo kutoka ndani ya programu ya AWK. Wakati wa kweli, gawk inachunguza maonyo. Wakati wa uongo, haifai. Ukipewa thamani ya kamba "mbaya , " onyo la nywele huwa makosa mabaya, hasa kama - sio = kuua . Thamani nyingine yoyote ya kweli tu inaonya maonyo.

NF

Idadi ya mashamba katika rekodi ya pembejeo ya sasa.

NR

Idadi kamili ya rekodi za pembejeo zilizoonekana sasa.

OFMT

Fomu ya pato kwa nambari, "% .6g" , kwa default.

OFS

Pato la shamba la pato, nafasi kwa default.

ORS

Mgawanyiko wa rekodi ya pato, na default lineline.

PROCINFO

Vipengele vya safu hii hutoa upatikanaji wa habari kuhusu programu ya AWK inayoendesha. Katika mifumo mingine, kunaweza kuwa na vipengele katika safu, "kundi1" kupitia "kikundi n " kwa baadhi ya n , ambayo ni idadi ya makundi ya ziada ambayo mchakato huo una. Tumia mtumiaji kwa mtihani kwa mambo haya. Mambo yafuatayo yanatakiwa kuwa inapatikana:

PROCINFO ["mfano"]

thamani ya wito wa mfumo wa getegid (2).

PROCINFO ["euid"]

thamani ya wito wa mfumo wa geteuid (2).

PROCINFO ["FS"]

"FS" ikiwa shamba linalogawanyika na FS linatumika , au "FIELDWIDTHS" ikiwa shamba linalogawanyika na FIELDWIDTHS linaanza .

PROCINFO ["gid"]

thamani ya kupiga simu ya getgid (2).

PROCINFO ["pgrpid"]

Kitambulisho cha kikundi cha mchakato wa mchakato wa sasa.

PROCINFO ["pid"]

ID ya mchakato wa mchakato wa sasa.

PROCINFO ["ppid"]

mchakato wa mchakato wa mzazi wa mchakato wa sasa.

PROCINFO ["uid"]

thamani ya simu ya kupata getuid (2).

RS

Mgawanyiko wa rekodi ya pembejeo, kwa default defaultline.

RT

Terminator rekodi. Gawk huweka RT kwa maandishi ya pembejeo ambayo yanafanana na tabia au kujieleza mara kwa mara iliyoelezwa na RS .

RSTART

Orodha ya tabia ya kwanza inalingana na mechi () ; 0 ikiwa hakuna mechi. (Hii inaashiria kwamba alama za tabia zinaanza saa moja).

RLENGTH

Urefu wa kamba inafanana na mechi () ; -1 ikiwa hakuna mechi.

SUBSEP

Tabia inayotumiwa kutenganisha michango nyingi katika vipengele vya safu, kwa default "\ 034" .

TEXTDOMAIN

Eneo la maandishi la mpango wa AWK; alitumiwa kupata tafsiri zilizotengwa kwa masharti ya programu.

Mipango

Mipango imeandikwa kwa maneno kati ya mabano ya mraba ( [ na ] ). Ikiwa maneno ni orodha ya kujieleza ( expr , expr ...) basi sajili ya safu ni kamba iliyo na mchanganyiko wa thamani (string) ya kila kujieleza, ikitenganishwa na thamani ya variable ya SUBSEP . Kituo hiki kinatumika kuiga kuzidisha vitu vyema. Kwa mfano:

i = "A"; j = "B"; k = "C"
x [i, j, k] = "hello, dunia \ n"

huweka kamba "hello, dunia \ n" kwa kipengele cha safu x ambazo ni indexed kwa kamba "A \ 034B \ 034C" . Vipande vyote katika AWK ni ushirika, yaani indexed kwa maadili ya kamba.

Mtumiaji maalum anaweza kutumiwa katika taarifa ikiwa ni au wakati wa kuhakikisha kama safu ina orodha yenye thamani fulani.

ikiwa (safu katika safu) uchapisha safu [val]

Ikiwa safu ina sajili nyingi, tumia (i, j) safu .

Ya kujengwa pia inaweza kutumika kwa kitanzi ili iterate juu ya mambo yote ya safu.

Kipengele kinaweza kufutwa kutoka safu kwa kutumia kauli ya kufuta . Taarifa ya kufuta pia inaweza kutumika kufuta maudhui yote ya safu, kwa kutaja jina la safu bila usajili.

Tofauti ya Kuandika na Kubadili

Vigezo na mashamba yanaweza kuwa nambari (zinazozunguka), au safu, au zote mbili. Jinsi thamani ya kutofautiana inafasiriwa inategemea mazingira yake. Ikiwa hutumiwa kwa kujieleza kwa nambari, itachukuliwa kama namba, ikiwa itatumiwa kama kamba itachukuliwa kama kamba.

Ili kulazimisha kutofautiana kutibiwa kama idadi, ongeza 0 kwao; ili kuwatia nguvu ili kutibiwa kama kamba, fikisha kwa namba ya null.

Wakati kamba inapaswa kubadilishwa kuwa namba, uongofu unafanywa kwa kutumia strtod (3). Nambari inabadilishwa kwa kamba kwa kutumia thamani ya CONVFMT kama kamba ya format kwa sprintf (3), na thamani ya nambari ya kutofautiana kama hoja. Hata hivyo, ingawa namba zote za AWK zinazunguka-msingi, maadili ya kawaida hubadilishwa kama integers. Hivyo, alipewa

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

variable b ina thamani ya kamba ya "12" na si "12.00" .

Gawk hufanya kulinganisha kama ifuatavyo: Ikiwa vigezo viwili ni namba, hulinganishwa kwa nambari. Ikiwa thamani moja ni ya nambari na nyingine ina thamani ya kamba ambayo ni 'namba ya simu,' 'kisha kulinganisha pia hufanyika kwa namba. Vinginevyo, thamani ya namba inabadilishwa kwa kamba na kulinganisha kwa kamba hufanyika. Mikanda miwili ikilinganishwa, bila shaka, kama masharti. Kumbuka kwamba kiwango cha POSIX kinatumia dhana ya '`namba ya' namba 'kila mahali, hata kwenye vipindi vya kamba. Hata hivyo, hii ni wazi si sahihi, na gawk haifanyi jambo hili. (Kwa bahati nzuri, hii imewekwa katika toleo la pili la kiwango.)

Kumbuka kuwa vipindi vya kamba, kama vile "57" , sio safu za nambari, ni kamba za kamba. Dhana ya `` namba ya nambari '' inatumika tu kwa mashamba, uingizaji wa getline , vipengele vya FILENAME , ARGV , vipengele vya ENVIRON na vipengele vya safu zilizoundwa kwa kupasuliwa () ambazo ni namba za simu. Dhana ya msingi ni kwamba pembejeo ya mtumiaji , na pembejeo tu ya mtumiaji, inayoonekana nambari, inapaswa kutibiwa kwa njia hiyo.

Vigezo visivyohamishwa vina thamani ya namba 0 na thamani ya kamba "" (null, au tupu, kamba).

Constants na Hexadecimal Constants

Kuanzia na toleo 3.1 la gawk, unaweza kutumia C-style octal na constant hexadecimal katika code yako AWK chanzo code. Kwa mfano, thamani ya octal 011 ni sawa na decimal 9 , na thamani ya hexadecimal 0x11 ni sawa na decimal 17.

Constant String

Vikwazo vya kamba katika AWK ni mfululizo wa wahusika uliohusishwa kati ya quotes mbili ( " ). Ndani ya masharti, mwongozo fulani wa kutoroka hutambuliwa, kama katika C. Hizi ni:

\\

Urejesho halisi.

\ a

Tabia `` tahadhari ''; kawaida tabia ya ASCII BEL.

\ b

backspace.

\ f

fomu ya fomu.

\ n

mpya.

\ r

kurudi kwa gari.

\ t

tab usawa.

\ v

tab ya wima.

\ x hex tarakimu

Tabia iliyowakilishwa na kamba ya tarakimu za hexadecimal zifuatazo \ x . Kama ilivyo katika ANSIC, tarakimu zote za hexadecimal zifuatazo zinachukuliwa kama sehemu ya mlolongo wa kutoroka. (Kipengele hiki kinapaswa kutuambia kitu kuhusu kubuni lugha na kamati.) Kwa mfano, "\ x1B" ni tabia ya ASCIIESC (kutoroka).

\ ddd

Tabia inayowakilishwa na mlolongo wa 1-, 2-, au 3-tarakimu ya octal. Kwa mfano, "\ 033" ni tabia ya ASCII ESC (kutoroka).

\ c

Tabia halisi c .

Utaratibu wa kutoroka pia unaweza kutumika ndani ya maneno ya mara kwa mara ya mara kwa mara (kwa mfano, / [\ t \ f \ n \ r \ v] / mechi ya wahusika wa whitespace).

Katika hali ya utangamano, wahusika waliowakilishwa na utaratibu wa kutoroka wa octal na hexadecimal hutendewa halisi wakati unatumiwa katika vipindi vya kawaida vya kujieleza. Hivyo, / \ 52b / ni sawa na \ * b / .

Sampuli na Vitendo

AWK ni lugha inayolengwa na mstari. Mfano huja kwanza, na kisha hatua. Taarifa za kitendo zimefungwa ndani na { na } . Labda mfano unaweza kuwa haupo, au hatua inaweza kuwa haipo, lakini, bila shaka, si wote wawili. Ikiwa mfano haupo, hatua inafanyika kwa kila rekodi moja ya uingizaji. Hatua iliyopo ni sawa na

{magazeti}

ambayo inachukua rekodi nzima.

Maoni yanaanza na `` # '' tabia, na endelea mpaka mwisho wa mstari. Mstari usioweza kutumiwa kutenganisha kauli. Kwa kawaida, taarifa imekwisha kwa mstari mpya, hata hivyo, hii sio kwa mstari unaoishi katika ``, '', { , ? , : , && , au || . Mipango inayoishi katika kufanya au mengine pia taarifa zao moja kwa moja zinaendelea kwenye mstari wafuatayo. Katika matukio mengine, mstari unaweza kuendelea na kumaliza kwa ', kwa hiyo kesi mpya itachukuliwa.

Maneno mengi yanaweza kuweka kwenye mstari mmoja kwa kuwatenganisha na ``; ''. Hii inatumika kwa maelezo yote ndani ya sehemu ya hatua ya jozi ya mfano-hatua (kesi ya kawaida), na kwa kauli ya hatua-hatua wenyewe.

Sampuli

Mfumo wa AWK unaweza kuwa moja ya yafuatayo:

BEGIN Mwisho / kujieleza mara kwa mara / muundo wa kuzungumza wa jamaa & mfano wa ruwaza || mfano wa mfano ? mfano : mfano ( mfano ) ! mfano pattern1 , pattern2

BEGIN na mwisho ni aina mbili za chati ambazo hazipatikani dhidi ya pembejeo. Sehemu za hatua za mifumo yote ya BEGIN zimeunganishwa kama taarifa zote zimeandikwa katika block moja ya BEGIN . Wanatakiwa kabla ya pembejeo yoyote isome. Vile vile, vitalu vyote vya END vimeunganishwa, na hufanyika wakati pembejeo yote imechoka (au wakati taarifa ya exit inafanywa). BEGIN na mifumo ya END haiwezi kuunganishwa na mifumo mingine katika maneno ya mfano. BEGIN na mifumo ya END haipatikani sehemu za hatua.

Kwa maonyesho / mifumo ya mara kwa mara , taarifa inayohusishwa inafanyika kwa kila rekodi ya pembejeo inayofanana na kujieleza mara kwa mara. Maneno ya kawaida yanafanana na yale yaliyomo katika mfano (1), na yanafupishwa chini.

Maneno ya kihusiano yanaweza kutumia yoyote ya waendeshaji iliyoelezwa hapo chini katika sehemu ya vitendo. Hizi zinajaribu kwa ujumla ikiwa mashamba fulani yanakabiliana na maneno fulani ya kawaida.

The && , || , na ! waendeshaji ni mantiki NA, mantiki OR, na mantiki NOT, kwa mtiririko huo, kama katika C. Wanafanya tathmini ya muda mfupi, pia kama ya C, na hutumiwa kwa kuchanganya maneno ya mfano wa primitive. Kama ilivyo katika lugha nyingi, maadili yanaweza kutumiwa kubadili utaratibu wa tathmini.

The ?: Operator ni kama operator sawa katika C. Ikiwa mfano wa kwanza ni wa kweli basi muundo unaotumiwa kupima ni muundo wa pili, vinginevyo ni wa tatu. Njia moja tu ya pili na ya tatu ni tathmini.

Mfano 1 , muundo wa mfano wa mfano 2 huitwa mfano wa aina mbalimbali . Inalingana na rekodi zote za uingizaji zinazoanzia rekodi inayofanana na muundo1 , na kuendelea mpaka rekodi inayofanana na muundo2 , ikiwa ni pamoja. Haina kuchanganya na aina yoyote ya kujieleza kwa mfano.

Maneno ya mara kwa mara

Maneno ya kawaida ni aina ya kupanuliwa iliyopatikana katika egrep . Wao hujumuishwa na wahusika kama ifuatavyo:

c

inafanana na yasiyo ya metacharacter c .

\ c

inafanana na tabia halisi c .

.

inafanana na tabia yoyote ikiwa ni pamoja na mstari mpya.

^

inalingana na mwanzo wa kamba.

$

inafanana na mwisho wa kamba.

[ abc ... ]

orodha ya tabia, inafanana na yeyote wa wahusika abc ....

[^ abc ... ]

orodha ya tabia, haifai tabia yoyote ila abc ....

r1 | r2

mbadala: inalingana na r1 au r2 .

r1r2

concatenation: mechi ya r1 , na kisha r2 .

r +

inafanana na moja au zaidi ya r .

r *

inafanana na sifuri au zaidi ya r .

r ?

inafanana na sifuri au moja ya r .

( r )

kikundi: mechi za r .

r { n }

r { n ,}

r { n , m } Nambari moja au mbili ndani ya braces huashiria ufafanuzi wa muda . Ikiwa kuna namba moja katika braces, kujieleza mara kwa mara kwa mara kwa mara hurudiwa mara. Ikiwa kuna namba mbili zilizotenganishwa na comma, r hurudiwa mara kwa mara. Ikiwa kuna namba moja ikifuatiwa na comma, basi r inarudiwa angalau n mara.

Maneno ya muda mfupi hupatikana tu ikiwa aidha - posto au -inter-interval inaelezwa kwenye mstari wa amri.

\ y

inalingana na kamba tupu bila ama mwanzo au mwisho wa neno.

\ B

mechi kamba tupu bila neno.

\ <

inalingana na kamba tupu bila mwanzo wa neno.

\>

inalingana na kamba tupu bila mwisho.

\ w

inalingana na tabia yoyote ya neno-jukumu (barua, tarakimu, au kusisitiza).

\ W

inafanana na tabia yoyote ambayo sio neno-jukumu.

\ `

inalingana na kamba tupu bila mwanzo wa kamba (kamba).

\ '

inalingana na kamba tupu bila mwisho wa buffer.

Utaratibu wa kutoroka ambao halali katika vipindi vya kamba (angalia chini) pia ni halali katika maneno ya kawaida.

Madarasa ya Tabia ni kipengele kipya kilichoanzishwa katika kiwango cha POSIX. Darasa la tabia ni ripoti maalum kwa kuelezea orodha ya wahusika ambao wana sifa maalum, lakini ambapo wahusika halisi wanaweza kutofautiana kutoka nchi hadi nchi na / au kutoka kwa tabia kuweka kwenye tabia. Kwa mfano, dhana ya nini ni tabia ya alfabeti inatofautiana na Marekani na Ufaransa.

Darasa la tabia ni halali tu kwa kujieleza mara kwa mara ndani ya mabano ya orodha ya tabia. Masomo ya tabia yanajumuisha [: , neno muhimu linaloashiria darasa, na :] . Madarasa ya tabia yaliyoelezwa na kiwango cha POSIX ni:

[: alnum:]

Wahusika wa alphanumeric.

[: alpha:]

Wahusika wa herufi.

[: tupu:]

Wafasi au wahusika wa tab.

[: cntrl:]

Weka wahusika.

[: tarakimu:]

Wahusika wa Hesabu.

[: grafu:]

Tabia ambazo zinaweza kuchapishwa na zinazoonekana. (Nafasi ni kuchapishwa, lakini haionekani, wakati ni ya wote.)

[:chini:]

Wahusika wa chini ya kialfabeti.

[: uchapisha:]

Wahusika kuchapishwa (wahusika ambao hawana udhibiti wa wahusika.)

[: punje:]

Wahusika wa herufi (wahusika ambao si barua, tarakimu, udhibiti wa wahusika, au wahusika wa nafasi).

[: nafasi:]

Wahusika wa nafasi (kama vile nafasi, tab, na fomu, kutaja wachache).

[: juu:]

Wahusika wa herufi kubwa zaidi.

[: xdigit:]

Tabia ambazo ni tarakimu za hexadecimal.

Kwa mfano, kabla ya kiwango cha POSIX, ili kufanana na wahusika wa alphanumeric, ungebidi kuandika / [A-Za-z0-9] / . Ikiwa tabia yako imewekwa na wahusika wengine wa alfabeti ndani yake, hii haikufananisha nayo, na ikiwa tabia yako imewekwa vyema tofauti kutoka kwa ASCII, hii haiwezi hata kufanana na wahusika wa ASCII alphanumeric. Na madarasa ya tabia ya POSIX, unaweza kuandika / [[: alnum:]] / , na hii inalingana na wahusika wa alfabeti na nambari katika kuweka tabia yako.

Mipangilio miwili ya ziada maalum inaweza kuonekana katika orodha ya tabia. Hizi zinahusu seti za tabia zisizo za ASCII, ambazo zinaweza kuwa na alama moja (inayoitwa vipengele vya kuunganisha ) ambazo zinawakilishwa na tabia zaidi ya moja, pamoja na wahusika kadhaa ambao ni sawa kwa kuunganisha , au kutengeneza, madhumuni. (Kwa mfano, kwa Kifaransa, wazi `` e '' na e'-grave accented ni sawa.)

Ishara za kuchanganya

Ishara ya kuunganisha ni kipengele cha aina nyingi ambacho kinajumuisha [. na .] . Kwa mfano, ikiwa ch ni kipengee cha kuunganisha, basi [[.ch.]] Ni kujieleza mara kwa mara ambayo inafanana na kipengele hiki cha kuchanganya, wakati [ch] ni kujieleza mara kwa mara inayofanana na c au h .

Darasa la Uwiano

Darasa la kulinganisha ni jina maalum la eneo la orodha ya wahusika ambao ni sawa. Jina limefungwa ndani ya [= na =] . Kwa mfano, jina e linaweza kutumiwa kuwakilisha '`e,' '` `e', '' na` `e` ''. Katika kesi hii, [= = = =] ni maneno ya kawaida inafanana na e , e ' , au e` yoyote .

Vipengele hivi ni muhimu sana katika maeneo yasiyozungumza Kiingereza. Kazi za maktaba ambazo gawk hutumia kwa kujieleza mara kwa mara vinavyolingana sasa zinatambua madarasa ya tabia ya POSIX; hawatambui alama za kupigana au madarasa ya sawa.

Wafanyakazi \ \ , \ B , \ ,, \ ,, w , \ ,, \ ' , na \' ' ni maalum kwa gawk ; wao ni upanuzi kulingana na vituo vya maktaba ya kawaida ya kujieleza ya GNU.

Chaguzi mbalimbali za amri za amri kudhibiti jinsi gawk inatafsiri wahusika katika maneno ya kawaida.

Hakuna chaguo

Katika hali ya msingi, gawk hutoa vifaa vyote vya maneno ya kawaida ya POSIX na waendeshaji wa kawaida wa GNU wa kuelezea hapo juu. Hata hivyo, maneno ya muda mfupi hayatumiki.

- posta

Maneno ya mara kwa mara ya POSIX yanasaidiwa, waendeshaji wa GNU sio maalum. (Kwa mfano, ni sawa na w ). Maneno ya muda mfupi yanaruhusiwa.

- muda mfupi

Maneno ya kawaida ya Unix ya kawaida yanafanana. Waendeshaji wa GNU sio maalum, maneno ya muda haipatikani, na pia sio madarasa ya tabia ya POSIX ( [:: alnum:]] na kadhalika). Tabia zilizoelezwa na utaratibu wa kutoroka ya octal na hexadecimal hutendewa halisi, hata kama zinawakilisha metacharacters za kujieleza mara kwa mara.

- wakati

Ruhusu maneno ya muda mrefu katika maneno ya kawaida, hata kama - muda uliotolewa.

Vitendo

Maelezo ya vitendo yanajumuishwa katika braces, { na } . Taarifa za kitendo zinajumuisha kauli ya kawaida, masharti, na maandishi yaliyopatikana katika lugha nyingi. Waendeshaji, taarifa za udhibiti, na kauli ya pembejeo / pato zinazopatikana zinafanyika baada ya wale walio katika C.

Waendeshaji

Wafanyakazi katika AWK, kwa utaratibu wa kupungua mbele, ni

( ... )

Kundi

$

Kumbukumbu ya shamba.

++ -

Uingizaji na mapendekezo, kiambishi cha kwanza na postfix.

^

Ufafanuzi ( ** pia unaweza kutumika, na ** = kwa mtumishi wa kazi).

+ -!

Unary pamoja, unary minus, na upuuzi mantiki.

* /%

Kuzidisha, mgawanyiko, na moduli.

+ -

Uongeze na kuondoa.

nafasi

Ushauri wa kamba.

<>

<=> =

! = == Waendeshaji wa marafiki wa kawaida.

~ ~ ~

Mechi ya kawaida ya kujieleza, mechi isiyopigwa. KUMBUKA: Usitumie mara kwa mara kujieleza mara kwa mara ( / foo / ) upande wa kushoto wa ~ au ! ~ . Tumia tu upande wa kulia. Maneno / foo / ~ exp ina maana sawa na (($ 0 ~ / foo /) ~ exp ) . Hii sio kawaida iliyopangwa.

in

Ushauri wa safu.

&&

Alama na.

||

Alama ya Alama.

?:

Kujieleza kwa masharti ya C. Hii ina aina ya expr1 ? expr2 : expr3 . Ikiwa expr1 ni kweli, thamani ya maneno ni expr2 , vinginevyo ni expr3 . Moja tu ya expr2 na expr3 ni tathmini.

= + = - =

* = / =% = ^ = Kazi. Wote kazi kamili ( var = thamani ) na mgawo wa waendeshaji (fomu zingine) zinasaidiwa.

Taarifa za Kudhibiti

Maelezo ya udhibiti ni kama ifuatavyo:

taarifa ( hali ) taarifa [hali ya] wakati hali ya ( statement ) statement wakati ( hali ) ya ( expr1 ; expr2 ; expr3 ) taarifa kwa ( var katika safu ) taarifa kuvunja kuendelea kufuta orodha [ index ] kufuta safu exit [ expression ] { kauli }

Taarifa za I / O

Taarifa ya pembejeo / pato ni kama ifuatavyo:

karibu ( file [ , jinsi ] )

Funga faili, bomba au ushirikiano. Hizi ni lazima tu kutumika wakati wa kufunga moja mwisho wa bomba mbili njia kwa ushirikiano mchakato. Inapaswa kuwa thamani ya kamba, ama "kwa" au "kutoka" .

toa

Weka $ 0 kutoka kwenye rekodi ya pembejeo ijayo; kuweka NF , NR , FNR .

faili ya getline <

Weka $ 0 kutoka kwa rekodi ya pili ya faili ; Weka NF .

getline var

Weka var kutoka kwa rekodi ya pembejeo ya pili; Weka NR , FNR .

faili ya getline var <

Weka var kutoka kwa rekodi ya faili ya pili.

amri | getline [ var ]

Anza amri kusambaza pato ama $ 0 au var , kama hapo juu.

amri | & getline [ var ]

Tumia amri kama mchakato wa ushirikiano ukipiga pato ama ama $ 0 au var , kama hapo juu. Co-michakato ni ugani wa gawk .

ijayo

Acha usindikaji rekodi ya pembejeo ya sasa. Rekodi ya pembejeo inayofuata inasoma na usindikaji huanza na muundo wa kwanza katika mpango wa AWK. Ikiwa mwisho wa data ya pembejeo unafanyika, kuzuia END (s), ikiwa ni yoyote, hutekelezwa.

nextfile

Acha usindikaji faili ya pembejeo ya sasa. Rekodi ya pembejeo inayofuata inakuja kutoka kwenye faili ya uingizaji inayofuata. FILENAME na ARGIND vinasasishwa, FNR imewekwa upya hadi 1, na usindikaji huanza na muundo wa kwanza katika programu ya AWK. Ikiwa mwisho wa data ya pembejeo unafanyika, kuzuia END (s), ikiwa ni yoyote, hutekelezwa.

magazeti

Inabadilisha rekodi ya sasa. Rekodi ya pato imekamilika kwa thamani ya variable ya ORS .

Chapisha orodha ya expr

Inabadilisha maneno. Kila kujieleza hutenganishwa na thamani ya variable ya OFS . Rekodi ya pato imekamilika kwa thamani ya variable ya ORS .

uchapisha orodha ya orodha ya faili >

Inabadilisha maneno kwenye faili . Kila kujieleza hutenganishwa na thamani ya variable ya OFS . Rekodi ya pato imekamilika kwa thamani ya variable ya ORS .

printf fmt, orodha ya expr

Weka na uchapishe.

printf fmt, orodha ya expr > orodha

Weka na uchapishe kwenye faili .

mfumo ( cmd-line )

Fanya mstari wa amri cmd , na urejee hali ya kuondoka. (Hii haiwezi kupatikana kwenye mifumo isiyo ya POSIX.)

fflush ( [ file ] )

Futa buffers yoyote zinazohusiana na faili wazi pato au faili bomba. Ikiwa faili haipo, basi pato la kawaida linawashwa. Ikiwa faili ni kamba isiyofaa, basi faili zote za pato zilizo wazi na mabomba zina buffers zao zimepigwa.

Marekebisho ya ziada ya pato yanaruhusiwa kuchapishwa na printf .

shirisha ... >> faili

huongeza pato kwa faili .

uchapisha ... | amri

anaandika juu ya bomba.

magazeti ... | na amri

inatuma data kwenye mchakato wa ushirikiano.

Amri ya getline inarudi 0 hadi mwisho wa faili na -1 kwa kosa. Juu ya kosa, ERRNO ina kamba inayoelezea tatizo.

KUMBUKA: Ikiwa unatumia bomba au ushirikiano wa mchakato wa kupata line , au kutoka kwa kuchapisha au printf ndani ya kitanzi, unapaswa kutumia karibu () kuunda matukio mapya ya amri. AWK haina kufunga moja kwa moja mabomba au michakato ya ushirikiano wakati wanarudi EOF.

Taarifa ya printf

Matoleo ya AWK ya taarifa ya printf na sprintf () kazi (tazama hapa chini) kukubali fomu za uongofu zifuatazo:

% c

Tabia ya ASCII. Ikiwa hoja inayotumiwa kwa % c ni nambari, inachukuliwa kama tabia na kuchapishwa. Vinginevyo, hoja ni kudhani kuwa kamba, na tabia pekee ya kwanza ya kamba hiyo imechapishwa.

% d , % i

Nambari ya decimal (sehemu ya integer).

%,% E

Nambari ya hatua inayozunguka ya fomu [-] d.dddddde [+ -] dd . Fomu ya E inatumia E badala ya e .

% f

Nambari ya hatua inayozunguka ya fomu [-] ddd.dddddd .

% g,% G

Tumia uongofu wa % e au % f , lolote ni fupi, na zero zisizohitajika zimezimwa. Fomu ya % G inatumia % E badala ya % e .

% o

Nambari ya octal isiyoandikwa (pia ni integer).

% u Nambari ya decimal isiyochapishwa (tena, integer).

% s

Kamba ya tabia.

% x,% X

Nambari ya hexadecimal isiyosajiliwa (integer). Fomu ya % X hutumia ABCDEF badala ya abcdef .

%%

Tabia moja ya % ; hakuna hoja inabadilishwa.

Kwa hiari, vigezo vya ziada vinaweza kuongea kati ya % na barua ya udhibiti:

kuhesabu $

Tumia hoja ya hesabu katika hatua hii katika kupangilia. Hii inaitwa kipaumbele cha kifedha na inalenga hasa kwa matumizi katika matoleo yaliyotafsiriwa ya masharti ya muundo, si katika maandishi ya awali ya programu ya AWK. Ni ugani wa gawk .

-

Maneno yanapaswa kushoto-haki katika uwanja wake.

nafasi

Kwa mabadiliko ya nambari, maadili ya kiambishi yaliyo mazuri na nafasi, na maadili hasi na ishara ndogo.

+

Ishara zaidi, iliyotumiwa kabla ya modifier ya upana (angalia chini), inasema daima hutoa ishara kwa uongofu wa nambari, hata kama data iliyopangiliwa ni nzuri. The + inapita juu ya modifier nafasi.

#

Tumia 'fomu nyingine' 'kwa barua fulani za udhibiti. Kwa % o , usambaza zero inayoongoza. Kwa % x , na % X , usambaze 0x au 0X inayoongoza kwa matokeo ya nonzero. Kwa % e , % E , na % f , matokeo huwa na uhakika wa daima. Kwa % g , na % G , zero za trailing haziondolewa kwenye matokeo.

0

Kuongoza 0 (zero) hufanya kama bendera, ambayo inaonyesha pato linapaswa kuwa limetiwa na zero badala ya nafasi. Hii inatumika hata kwa muundo usio wa kawaida wa pato. Bendera hii ina athari tu wakati upana wa shamba ni pana kuliko thamani ya kuchapishwa.

upana

Shamba inapaswa kufungwa kwa upana huu. Shamba ni kawaida iliyojaa nafasi. Ikiwa bendera 0 imetumiwa, imejaa zero.

. prec

Nambari inayoelezea usahihi kutumia wakati wa uchapishaji. Kwa % e , % E , na % f muundo, hii inabainisha idadi ya tarakimu unayotaka kuchapishwa kwa haki ya hatua ya decimal. Kwa fomu % g , na % G , inabainisha idadi kubwa ya tarakimu. Kwa % d , % , % i , % u , % x , na % X format, inabainisha idadi ndogo ya tarakimu na kuchapisha. Kwa % s , inabainisha idadi kubwa ya wahusika kutoka kwenye kamba ambayo inapaswa kuchapishwa.

Upana wa nguvu na uwezo wa ANSI C printf () routines ni mkono. A * badala ya upana au maelezo maalum husababisha maadili yao kuchukuliwe kutoka kwenye orodha ya hoja kwa printf au sprintf () . Ili kutumia ufafanuzi wa mpangilio kwa upana wa nguvu au usahihi, usambaze kuhesabu $ baada ya * kwenye kamba ya muundo. Kwa mfano, "% 3 $ * 2 $. * 1 $ s" .

Majina ya Picha Maalum

Unapofanya upya I / O kutoka kwa kuchapa au kuchapisha kwenye faili, au kwa njia ya getline kutoka faili, gawk inatambua faili maalum za ndani. Majina haya ya faili huruhusu ufikiaji wa kufungua wajumbe wa faili waliorithiwa kutoka mchakato wa mzazi wa gawk (kawaida shell). Majina haya ya faili pia yanaweza kutumiwa kwenye mstari wa amri kwa jina la data. Majina ya faili ni:

/ dev / stdin

Pembejeo ya kawaida.

/ dev / stdout

Pato la kawaida.

/ dev / stderr

Pato la kawaida la kosa.

/ dev / fd / n

Faili inayohusishwa na descriptor ya wazi faili.

Hizi ni muhimu kwa ujumbe wa makosa. Kwa mfano:

Chapisha "Uliipiga!" > "/ dev / stderr"

ambapo unapaswa kutumia vinginevyo

Chapisha "Uliipiga!" |. | "paka 1> & 2"

Majina maalum yafuatayo yanaweza kutumiwa kwa & operator-mchakato wa mchakato kwa kuunda uhusiano wa mtandao wa TCP / IP.

/ inet / tcp / lport / rhost / rport

Funga kwa uunganisho wa TCP / IP kwenye bandari ya bandari ya ndani hadi jeshi la kijijini kijijini kijijini. Tumia bandari ya 0 ili mfumo uweke bandari.

/ inet / udp / lport / rhost / rport

Sawa, lakini tumia UDP / IP badala ya TCP / IP.

/ inet / ghafi / lport / rhost / rport

Imehifadhiwa kwa matumizi ya baadaye.

Majina mengine maalum yanatoa upatikanaji wa habari kuhusu mchakato wa gawk unaoendesha. Majina haya ya faili sasa yameharibika. Tumia safu ya PROCINFO kupata taarifa wanayoyatoa. Majina ya faili ni:

/ dev / pid

Kusoma faili hii inarudi ID ya utaratibu wa mchakato wa sasa, katika decimal, imekamilika na mstari mpya.

/ dev / ppid

Kusoma faili hii inarudi ID ya utaratibu wa wazazi wa mchakato wa sasa, kwa decimal, imekamilika na mstari mpya.

/ dev / pgrpid

Kusoma faili hii inarudi Kitambulisho cha kikundi cha utaratibu wa mchakato wa sasa, katika decimal, imekamilika na tarehe mpya.

/ dev / mtumiaji

Kusoma faili hii inarudi rekodi moja iliyomalizika kwa nambari mpya. Mashamba yanatengwa na nafasi. $ 1 ni thamani ya wito wa mfumo wa getuid (2), $ 2 ni thamani ya wito wa mfumo wa geteuid (2), $ 3 ni thamani ya simu ya getgid (2), na $ 4 ni thamani ya getegid (2) simu ya simu. Ikiwa kuna mashamba mengine ya ziada, ni vitambulisho vya kikundi vilivyorejeshwa na getgroups (2). Vikundi vingi haviwezi kuungwa mkono kwenye mifumo yote.

Kazi za Hesabu

AWK ina kazi zifuatazo za kujengwa kwa hesabu:

atan2 ( y , x )

Inarudi arctangent ya y / x katika radians.

cos ( expr )

Inarudi cosine ya expr , ambayo iko katika radians.

exp ( expr )

Kazi ya ufafanuzi.

int ( expr )

Inakata kwa integer.

logi ( expr )

Kazi ya logarithm ya asili.

rand ()

Inarudi idadi ya nambari kati ya 0 na 1.

dhambi ( expr )

Inarudi sine ya expr , ambayo iko katika radians.

sqrt ( expr )

Kazi ya mizizi ya mraba.

srand ( [ expr ] )

Inatumia expr kama mbegu mpya kwa generator namba ya random. Ikiwa hakuna expr hutolewa, wakati wa siku hutumiwa. Thamani ya kurudi ni mbegu ya awali kwa jenereta ya idadi ya random.

Kazi za String

Gawk ina kazi zifuatazo za kifaa kilichojengwa:

asort ( s [ , d ] )

Inarudi idadi ya vipengele katika safu ya chanzo. Maudhui ya s yanapangwa kwa kutumia kanuni za kawaida za gawk kwa kulinganisha maadili, na nambari za maadili yaliyopangwa hubadilishwa na integers zenye kuanzia kuanzia na 1. Ikiwa safu ya marudio ya hiari ya upeo inaelezewa, basi s ni ya kwanza ya d , na kisha d hupangwa, na kuacha safu za safu ya chanzo hazibadilika.

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

Tafuta kamba ya t kwa mechi ya kujieleza kwa kawaida r . Ikiwa h ni kamba inayoanza na g au G , kisha kuchukua nafasi ya mechi zote za r na s . Vinginevyo, h ni namba inayoonyesha mechi ya r kuchukua nafasi. Ikiwa t haipatikani, $ 0 hutumiwa badala yake. Ndani ya maandishi ya uingizaji, mlolongo \ n , ambapo n ni tarakimu kutoka kwa 1 hadi 9, inaweza kutumika ili kuonyesha tu maandishi yaliyofanana na subexpression ya wazazi. Mlolongo \ 0 inawakilisha maandishi yote yanayofanana, kama vile tabia & . Tofauti na ndogo () na gsub () , kamba iliyorekebishwa inarudi kama matokeo ya kazi, na kamba ya lengo la awali halibadilishwi .

gsub ( r , s [ , t ] )

Kwa kila sambamba inalinganisha kujieleza mara kwa mara r katika kamba t , kubadili kamba s , na kurudi idadi ya mbadala. Ikiwa t haipatikani, tumia $ 0 . An & nakala ya uingizwaji inabadilishwa na maandishi yaliyofanana. Tumia \ na kupata halisi & . (Hii lazima iitwaye kama "\\ &" ; ona GAWK: Programu ya AWK yenye ufanisi kwa majadiliano kamili ya sheria za & s backslashes katika maandishi ya badala ya ndogo () , gsub () , na watuub () .)

ripoti ( s , t )

Inarudi index ya kamba t katika kamba s , au 0 ikiwa t haipo. (Hii inaashiria kwamba alama za tabia zinaanza saa moja).

urefu ( [ s ] )

Inaruhusu urefu wa kamba , au urefu wa $ 0 ikiwa sio hutolewa.

mechi ( s , r [ , a ] )

Inarudi msimamo katika s ambapo maneno ya kawaida yatokea , au 0 ikiwa r haipo, na huweka maadili ya RSTART na RLENGTH . Kumbuka kwamba amri ya hoja ni sawa na ya ~ operator: str . Ikiwa safu hutolewa, inafafanuliwa kisha vipengele 1 hadi n vijazwa na sehemu za s ambazo zinalingana na subexpression inayohusiana na wazazi katika r . Kipengele cha 0'cha ina sehemu ya s inayoendana na maelezo ya kawaida ya kawaida.

fungua ( s , [ , r ] )

Inatafuta kamba s kwenye safu ya kujieleza ya kawaida, na inarudi idadi ya mashamba. Ikiwa r imefuta, FS hutumiwa badala yake. Safu ya kwanza imeondolewa. Kupiga mateka hufanyika kwa ugawanyiko wa shamba, ilivyoelezwa hapo juu.

sprintf ( fmt , orodha ya expr )

Inabadilisha orodha ya expr kulingana na fmt , na inarudi kamba inayosababisha.

strtonum ( str )

Inachunguza str , na inarudi thamani yake ya thamani. Ikiwa chunzo huanza na mstari wa kuongoza 0 , strtonum () inadhani kuwa str ni idadi ya octal. Ikiwa str huanza na 0x au 0X inayoongoza , strtonum () inadhani kuwa str ni namba hexadecimal.

ndogo ( r , s [ , t ] )

Kama vile gsub () , lakini sarafu ya kwanza inayofanana inachukuliwa.

substr ( s , i [ , n ] )

Hurejesha sehemu ya s- mbadala ya s kuanza kwa i . Ikiwa n imefuta, wengine wote hutumiwa.

tolower ( str )

Inaruhusu nakala ya kamba str , na wahusika wote wa juu katika str kutafsiriwa kwa wenzao sawa chini-kesi. Wahusika wasio na herufi wanaachwa bila kubadilika.

kipigo ( str )

Hurejesha nakala ya string str , na wahusika wote chini kesi katika str kutafsiriwa kwa wenzao husika sambamba kesi. Wahusika wasio na herufi wanaachwa bila kubadilika.

Kazi za Muda

Tangu moja ya matumizi ya msingi ya mipango ya AWK ni usindikaji faili za logi zilizo na taarifa ya wakati wa timu, gawk hutoa kazi zifuatazo kwa kupata timu za muda na kuzipangia.

mktime ( datespec )

Inapunguza tarehepec ndani ya muhuri wakati wa fomu sawa na kurudi kwa systime () . Thetapec ni kamba ya fomu YYYY MM DD HH MM SS [DST] . Yaliyomo ya kamba ni nambari sita au saba zinazowakilisha kwa mtiririko huo mwaka mzima ikiwa ni pamoja na karne, mwezi wa 1 hadi 12, siku ya mwezi 1 hadi 31, saa ya siku kutoka 0 hadi 23, dakika kutoka 0 hadi 59, na pili kutoka 0 hadi 60, na bendera ya kuokoa mchana ya hiari. Maadili ya namba hizi hazihitaji kuwa ndani ya safu zilizochaguliwa; kwa mfano, saa ya -1 inamaanisha saa 1 kabla ya usiku wa manane. Kalenda ya asili ya zori ya Gregory inadhaniwa, na mwaka 0 mwaka uliopita 1 na mwaka -1 mwaka uliopita 0. Wakati unadhaniwa kuwa katika muda wa wakati. Ikiwa bendera ya kuokoa mchana ni nzuri, wakati unadhaniwa kuwa wakati wa kuokoa mchana; ikiwa sifuri, wakati unadhaniwa kuwa wakati wa kawaida; na kama hasi (default), mktime () inajaribu kuamua ikiwa muda wa kuokoa mchana unafanyika kwa wakati uliowekwa. Ikiwa tarehepec haina vipengele vya kutosha au ikiwa muda unaofuata haujitokeza , mktime () hurudi -1.

strftime ( [ muundo [ , timestamp ]] )

Muundo wa timestampu kulingana na vipimo katika muundo. Timestamp lazima iwe na fomu sawa na kurudi kwa systime () . Ikiwa timestamp haipo, muda wa sasa wa siku unatumiwa. Ikiwa muundo haupo, muundo wa default sawa na pato la tarehe (1) hutumiwa. Angalia maelezo ya kazi ya strftime () katika ANSI C kwa uongofu wa muundo unaohakikishiwa kuwa inapatikana. Toleo la umma la kikoa la strftime (3) na ukurasa wa mtu kwa kuja na gawk ; ikiwa toleo hilo lilitumiwa kujenga gorofa , basi mabadiliko yote yaliyotajwa katika ukurasa wa mtu huyo yanapatikana kwa gawk.

systime ()

Inarudi muda wa sasa wa siku kama idadi ya sekunde tangu Epoch (1970-01-01 00:00:00 UTC juu ya mifumo ya POSIX).

Kazi za Kazi za Kidogo

Kuanzia na toleo la 3.1 la gawk , kazi zifuatazo za uendeshaji zinapatikana. Wao hufanya kazi kwa kubadili maadili ya uhakika yaliyoelekezwa mara mbili kwa integuers za muda mrefu ambazo hazijaandikwa , kufanya kazi, na kisha kugeuza matokeo yake kwa hatua inayoelekea. Kazi ni:

na ( v1 , v2 )

Kurudi kidogo na ya maadili yaliyotolewa na v1 na v2 .

compl ( val )

Rudi ufikiaji mdogo wa val .

Lshift ( val , hesabu )

Kurudi thamani ya val , iliyogeuka kushoto kwa kuhesabu bits.

au ( v1 , v2 )

Kurudi kwa uharibifu OR au maadili yaliyotolewa na v1 na v2 .

rshift ( val , hesabu )

Kurudi thamani ya val , imehamishwa haki kwa kuhesabu bits.

xor ( v1 , v2 )

Rudi XOR ya maadili yaliyotolewa na v1 na v2 .

Kazi za Kimataifa

Kuanzia na toleo 3.1 la gawk , kazi zifuatazo zinaweza kutumika kutoka ndani ya programu yako ya AWK ya kutafsiri masharti wakati wa kukimbia. Kwa maelezo kamili, angalia GAWK: Programu ya AWK yenye ufanisi .

bindtextdomain ( directory [ , domain ] )

Inabainisha saraka ambapo gawk inatafuta mafaili ya .mo , ikiwa haitakuwa au haiwezi kuwekwa katika maeneo ya `` standard '(kwa mfano, wakati wa kupima). Inarudi saraka ambapo uwanja ni '`amefungwa.' '

Domain default ni thamani ya TEXTDOMAIN . Ikiwa saraka ni kamba isiyo wazi ( "" ), kisha bindtextdomain () inarudi kisheria ya sasa kwa uwanja uliopewa.

dcgettext ( kamba [ , uwanja [ , jamii ]] )

Inarudi tafsiri ya kamba katika uwanja wa kikoa cha maandishi kwa kiwanja cha jamii ya eneo. Thamani ya default kwa uwanja ni thamani ya sasa ya TEXTDOMAIN . Thamani ya default kwa kikundi ni "LC_MESSAGES" .

Ikiwa unatoa thamani kwa kikundi , lazima iwe kamba sawa na moja ya makundi yanayojulikana ya locale yaliyoelezwa katika GAWK: Programu ya AWK inayofaa . Lazima pia uongeze uwanja wa maandishi. Tumia TEXTDOMAIN ikiwa unataka kutumia kikoa cha sasa.

dcngettext ( string1 , string2 , namba [ , uwanja [ , jamii ]] )

Inaruhusu fomu ya wingi inayotumiwa kwa idadi ya tafsiri ya string1 na string2 katika uwanja wa kikoa wa maandishi kwa jamii ya jamii ya eneo. Thamani ya default kwa uwanja ni thamani ya sasa ya TEXTDOMAIN . Thamani ya default kwa kikundi ni "LC_MESSAGES" .

Ikiwa unatoa thamani kwa kikundi , lazima iwe kamba sawa na moja ya makundi yanayojulikana ya locale yaliyoelezwa katika GAWK: Programu ya AWK inayofaa . Lazima pia uongeze uwanja wa maandishi. Tumia TEXTDOMAIN ikiwa unataka kutumia kikoa cha sasa.

FUNZO ZA USER-DEFINED

Kazi katika AWK hufafanuliwa kama ifuatavyo:

Jina la kazi ( orodha ya parameter ) { taarifa }

Kazi zinatekelezwa wakati zinaitwa kutoka ndani ya maneno katika mifumo ama au vitendo. Vigezo halisi hutolewa katika simu ya kazi hutumiwa kuanzisha vigezo rasmi ambavyo vinatangaza kazi. Mipangilio hupitishwa kwa kumbukumbu, vigezo vingine vinapitishwa kwa thamani.

Kwa kuwa kazi hazikuwa sehemu ya lugha ya AWK, utoaji wa vigezo vya mitaa ni jambo la kushangaza: Wanatangazwa kama vigezo vya ziada katika orodha ya parameter. Mkutano huo ni kutenganisha vigezo vya mitaa kutoka kwa vigezo halisi na nafasi za ziada katika orodha ya parameter. Kwa mfano:

f (f, q, a, b) # na b ni za ndani {...} / abc / {...; f (1, 2); ...}

Wazazi wa kushoto katika simu ya kazi inahitajika ili kufuata mara moja jina la kazi, bila nafasi yoyote nyeupe inayoingilia. Hii ni ili kuepuka uelewa wa syntactic na operator wa concatenation. Kizuizi hiki hakihusu kazi zilizojengwa hapo juu.

Kazi zinaweza kutana na zinaweza kuwa za kawaida. Vigezo vya kazi kutumika kama vigezo vya mitaa ni initialized kwa kamba null na namba namba juu ya maombi ya kuomba.

Tumia expr kurudi kurudi thamani kutoka kwa kazi. Thamani ya kurudi haijafanywa kama hakuna thamani inayotolewa, au ikiwa kazi inarudi kwa `` kuanguka '' mwisho.

Ikiwa - kifungo kimetolewa, gawk inonya juu ya wito kwa kazi zisizojulikana wakati wa wakati, badala ya wakati wa kukimbia. Kuita kazi isiyojulikana wakati wa kukimbia ni kosa mbaya.

Neno func linaweza kutumiwa badala ya kazi .

DYNAMICALLY LOADING NEW FUNCTIONS

Kuanzia na toleo 3.1 la gawk , unaweza kuboresha kazi mpya za kujengwa kwa mkalimani wa gawk . Maelezo kamili ni zaidi ya upeo wa ukurasa huu wa mwongozo; angalia GAWK: Programu ya AWK yenye ufanisi kwa maelezo.

ugani ( kitu , kazi )

Unganisha faili ya kitu kilichoshirikiwa na jina, na uombe kazi katika kitu hicho, ili uanzishe. Hizi zinapaswa kutolewa wote kama masharti. Inarudi thamani iliyorejeshwa na kazi .

Kazi hii inatolewa na imeandikwa katika GAWK: Programu ya AWK ya Ufanisi , lakini kila kitu kuhusu kipengele hiki kinawezekana kubadilika katika kutolewa ijayo. Tunasisitiza kwa kiasi kikubwa kwamba usitumie kipengele hiki kwa chochote ambacho hutaki kurejea tena.

SIGNALS

pgawk inakubali ishara mbili. SIGUSR1 husababisha kupoteza maelezo ya wasifu na kazi na faili ya wasifu, ambayo ni ama awkprof.out , au faili yoyote iliyoitwa na - chaguo -profile . Halafu inaendelea kukimbia. SIGHUP husababisha kupoteza maelezo ya wasifu na kazi na kisha kuondoka.

Mifano

Chapisha na uchague majina ya kuingia ya watumiaji wote: BEGIN {FS = ":"} {uchapisha $ 1 | " fanya"} Fanya mstari katika faili: {nlines ++} END {print nlines} Jitayarisha kila mstari kwa nambari yake katika faili: {funga FNR, $ 0} Concatenate na nambari ya mstari (tofauti kwenye kichwa): {kuchapisha NR, $ 0}

Kuingiza ndani

Vikwazo vya kamba ni ufuatiliaji wa wahusika walioambatanishwa katika quotes mbili. Katika mazingira yasiyozungumza Kiingereza, inawezekana kuashiria masharti katika programu ya AWK kama inahitaji kutafsiri kwa asili ya asili ya asili. Mikambo hiyo ni alama katika mpango wa AWK na kusisitiza inayoongoza (`` _ ''). Kwa mfano,

gawk 'BEGIN {magazeti "hello, dunia"}'

daima hubadilisha hello, ulimwengu . Lakini,

gawk 'BEGIN {magazeti _ "hello, dunia"}'

inaweza kuchapisha bonjour, ulimwengu nchini Ufaransa.

Kuna hatua kadhaa zinazohusika katika kuzalisha na kutekeleza programu ya AWK ya localizable.

1.

Ongeza BEGIN hatua ya kugawa thamani kwa TEXTDOMAIN kutofautiana ili kuweka kikoa cha maandishi kwa jina lililohusishwa na programu yako.


BEGIN {TEXTDOMAIN = "myprog"}

Hii inaruhusu gawk kupata faili ya .mo inayohusishwa na programu yako. Bila hatua hii, gawk inatumia kikoa cha ujumbe wa maandishi, ambayo huenda haina tafsiri za programu yako.

2.

Weka masharti yote ambayo yanapaswa kutafsiriwa na uongozi unaoongoza.

3.

Ikiwa ni lazima, tumia dcgettext () na / au bindtextdomain () kazi katika programu yako, kama inafaa.

4.

Run gawk --gen-po -f myprog.awk> myprog.po ili kuzalisha faili ya .po kwa programu yako.

5.

Kutoa tafsiri sahihi, na kujenga na usanidi faili ya .mo sambamba.

Kipengele cha kimataifa kinaelezwa kwa undani kamili katika GAWK: Programu ya AWK inayofaa .

Utangamano wa Posix

Lengo kuu la gawk ni utangamano na kiwango cha POSIX, pamoja na toleo la karibuni la UNIX awk . Ili kufikia mwisho huu, gawk inashirikisha makala zifuatazo za mtumiaji zinazoonekana ambazo hazielezekani kwenye kitabu cha AWK, lakini ni sehemu ya toleo la Bell Laboratories ya awk , na ni katika kiwango cha POSIX.

Kitabu kinaonyesha kuwa kazi ya mstari wa amri hutokea wakati awk ingeweza kufungua hoja kama faili, ambayo ni baada ya kuzuia BEGIN inafanywa. Hata hivyo, katika utekelezaji wa awali, wakati kazi hiyo ilionekana kabla ya majina yoyote ya faili, kazi hiyo itatokea kabla ya kizuizi cha BEGIN kitakapoendeshwa . Maombi yalikutegemea kipengele hiki `` 'Wakati awk ilibadilishwa ili kufanana na nyaraka zake, chaguo -v la kugawa vigezo kabla ya utekelezaji wa programu iliongezwa ili kuzingatia maombi ambayo yalitegemea tabia ya zamani. (Kipengele hiki kilikubaliwa na Maabara ya Bell na watengenezaji wa GNU.)

Chaguo -W cha vipengele maalum vya utekelezaji ni kutoka kwa kiwango cha POSIX.

Wakati wa usindikaji hoja, gawk inatumia chaguo maalum `` - '' ili ishara mwisho wa hoja. Kwa hali ya utangamano, inauonya kuhusu lakini vinginevyo inachukia chaguzi zisizofanywa. Katika operesheni ya kawaida, hoja hizo zinapitishwa kwenye mpango wa AWK kwa mchakato huo.

Kitabu cha AWK hakifafanua thamani ya kurudi ya srand () . Kiwango cha POSIX ina kurudi mbegu iliyokuwa iko, kuruhusu kuweka wimbo wa utaratibu wa idadi ya random. Kwa hivyo srand () katika gawk pia inarudi mbegu yake ya sasa.

Vipengele vingine vipya ni: Matumizi ya chaguzi nyingi -f (kutoka MKS Awk ); safu ya ENVIRON ; mfululizo wa \ na , na \ v (uliofanywa awali katika gawk na kulishwa nyuma katika toleo la Bell Laboratories); tolower () na toupper () kazi iliyojengwa (kutoka kwa maabara ya Bell Laboratories); na maelezo ya uongofu wa ANSI C katika printf (kufanyika kwanza katika toleo la Bell Laboratories).

Makala ya Kihistoria

Kuna mambo mawili ya utekelezaji wa AWK wa kihistoria ambao gawk huunga mkono. Kwanza, inawezekana kupiga simu () kazi iliyojengwa sio tu na hoja, lakini hata bila ya pesa! Hivyo,

urefu = # Mtakatifu Algol 60, Batman!

ni sawa na yoyote ya

= = urefu ()
urefu = ($ 0)

Kipengele hiki kinachukuliwa kama `` kilichopunguzwa '' katika kiwango cha POSIX, na gawk inachukua onyo juu ya matumizi yake ikiwa - salama ni maalum kwenye mstari wa amri.

Kipengele kingine ni matumizi ya ama kuendelea au taarifa za kuvunja nje ya mwili wa muda , kwa , au kufanya kitanzi. Utekelezaji wa jadi wa AWK umechukua matumizi kama hayo sawa na kauli inayofuata . Gawk inasaidia matumizi haya ikiwa - muda mrefu umewekwa.

Upanuzi wa GNU

Gawk ina idadi ya upanuzi kwenye awamu ya POSIX. Wao ni ilivyoelezwa katika sehemu hii. Upanuzi wote ulioelezwa hapa unaweza kuzimwa na gawk inakaribisha na chaguo- chache .

Vipengele vifuatavyo vya gawk hazipatikani katika POSIX awk .

*

Hakuna utafutaji wa njia unaofanywa kwa faili zilizoitwa kupitia -f chaguo. Kwa hiyo mabadiliko ya mazingira ya AWKPATH sio maalum.

*

Mlolongo wa \ x kutoroka. (Walemavu na - posto .)

*

Fflush () kazi. (Walemavu na - posto .)

*

Uwezo wa kuendelea na mistari baada ? na :. (Walemavu na - posto .)

*

Vigumu vya Octal na hexadecimal katika programu za AWK.

*

Vigezo vya ARGIND , BINMODE , ERRNO , LINT , RT na TEXTDOMAIN sio maalum.

*

Tofauti ya IGNORECASE na madhara yake haipatikani.

*

Uwanja wa FIELDWIDTHS uliobadilishwa na ulio na upana wa upana.

*

Orodha ya PROCINFO haipatikani.

*

Matumizi ya RS ni kujieleza mara kwa mara.

*

Majina maalum ya faili inapatikana kwa redirection ya I / O haijatambuliwa.

*

The | & operator kwa ajili ya kujenga mchakato wa ushirikiano.

*

Uwezo wa kugawanya wahusika binafsi kwa kutumia kamba ya null kama thamani ya FS , na kama hoja ya tatu ili kugawanywa () .

*

Majadiliano ya pili ya pili kwa kazi ya karibu () .

*

Njia ya tatu ya hiari ya kazi ya mechi () .

*

Uwezo wa kutumia maelezo maalum kwa printf na sprintf () .

*

Matumizi ya kufuta safu ili kufuta maudhui yote ya safu.

*

Matumizi ya nextfile kuacha usindikaji wa faili ya pembejeo ya sasa.

*

The and () , asort () , bindtextdomain () , compl () , dcgettext () , gensub () , lshift () , mktime () , au () , rshift () , strftime () , strtonum () , systime () na xor () kazi.

*

Fimbo za localizable.

*

Inaongeza kazi mpya za kujengwa kwa nguvu na kazi ya upanuzi () .

Kitabu cha AWK hakifafanua thamani ya kurudi ya kazi ya karibu () . Karibu ya Gawk () inarudi thamani kutoka fclose (3), au pclose (3), wakati wa kufunga faili ya pato au bomba, kwa mtiririko huo. Inarudi hali ya kuondoka kwa mchakato wakati wa kufunga pembejeo ya pembejeo. Thamani ya kurudi ni -1 ikiwa faili iliyoitwa, bomba au ushirikiano haukufunguliwa na redirection.

Wakati gawk inapotakiwa na chaguo - chaguo, kama hoja ya fs kwa -F chaguo ni `` t '', kisha FS imewekwa kwenye tabia ya tab. Kumbuka kwamba kuandika gawk -F \ t ... husababisha shell kwa kutaja ``, '', na haipitwi `` \ t '' kwenye chaguo -F . Kwa kuwa hii ni kesi mbaya sana, sio tabia ya default. Tabia hii pia haina kutokea kama - postx imesemwa. Kwa kweli kupata tabia ya tab kama mgawanyiko wa shamba, ni bora kutumia quotes moja: gawk -F '\ t' ....

Angalia amri zingine : kusubiri , lp , kamili , execv , getfacl , ioctl , uniq , rmmod , pvcreate , rsh , unix2dos , cal , fs , cd , iwpriv , swapon , autofs , majadiliano , motd , bure , lpr , execl , fdisk , kwa , ambaye , iwconfig , ifconfig , vgdisplay , wazi , lsmod , ntohs , mailq , kuua , wtmp