Mësoni Command Linux - gawk

emër

gawk - skanimi i modelit dhe gjuha e përpunimit

përmbledhje

gawk [POSIX ose opsionet e stilit GNU] -f program-file [ - ] file ...
gawk [POSIX ose opsionet e stilit GNU] [ - ] skedari i programit ...

pgawk [POSIX ose opsionet e stilit GNU] -f program-file [ - ] file ...
pgawk [POSIX ose opsionet e stilit GNU] [ - ] skedari i programit ...

Përshkrim

Gawk është zbatimi i Projektit GNU të gjuhës programuese AWK. Ai është në përputhje me përkufizimin e gjuhës në POSIX 1003.2 Standard Command Language dhe Utilities. Ky version është i bazuar në përshkrimin në gjuhën e programimit AWK , nga Aho, Kernighan dhe Weinberger, me karakteristikat shtesë që gjenden në versionin System V Release 4 të UNK awk . Gawk gjithashtu ofron më të fundit Bell Laboratories zgjerime awk , dhe një numër të zgjerimeve të veçanta GNU.

Pgawk është versioni i profilizimit të gawk . Është identike në çdo mënyrë për të kontrolluar, përveç se programet drejtohen më ngadalë dhe automatikisht prodhon një profil ekzekutimi në dosjen awkprof.out kur bëhet. Shiko opsionin --profile , më poshtë.

Linja e komandës përbëhet nga opsionet për të kontrolluar vetë, teksti i programit AWK (nëse nuk sigurohet nëpërmjet opsioneve -f ose --file ) dhe vlerat që do të vihen në dispozicion në variablave AWK të paracaktuara ARGC dhe ARGV .

Formati i opsionit

Opsionet Gawk mund të jenë opsione POSIX tradicionale të letrës ose opsione të gjata të stilit GNU. Opsionet POSIX fillojnë me një `` - '' të vetëm, ndërsa opsionet e gjata fillojnë me `` - ''. Janë dhënë mundësi të gjata për të dy tiparet specifike të GNU-së dhe për veçoritë e mandatuara nga POSIX.

Duke ndjekur standardin POSIX, opsionet specifike gawk sigurohen nëpërmjet argumenteve të opsionit -W . Opsionet e shumëfishta -W mund të furnizohen Secili opsion -W ka një opsion korrespondues të gjatë, siç detajohet më poshtë. Argumentet për opsionet e gjata janë ose të bashkuara me opsionin me një shenjë, pa hapësira të ndërhyrjes, ose mund të jepen në argumentin vijues të vijës së komandës. Mundësitë e gjata mund të shkurtohen, për sa kohë që shkurtesa mbetet unike.

Opsione

Gawk pranon opsionet në vijim, të renditura në mënyrë alfabetike.

-F fs

--field-ndarës fs Përdorni fs për ndarësin e fushës së hyrjes (vlera e variablave të paracaktuara FS ).

-v var = val

--assign var = val Caktoni vlerën val tek variable var , para fillimit të ekzekutimit të programit. Vlerat e tilla të ndryshueshme janë në dispozicion të bllokut BEGIN të një programi AWK.

-f program-file

- file-file file Lexoni burimin e programit AWK nga skedari i skedarit , në vend të argumentit të vijës së komandës së parë. Opsionet e shumëfishtë -f (ose --file ) mund të përdoren.

-mf NNN

-mr NNN Vendosni kufijtë e ndryshëm të kujtesës në vlerën NNN . Flamuri f vendos numrin maksimal të fushave, dhe flamuri r vendos madhësinë maksimale të rekordeve. Këto dy flamuj dhe opsioni -m janë nga versioni i hulumtimit Bell Laboratories të awks UNIX . Ata janë injoruar nga gawk , pasi gawk nuk ka kufij të paracaktuar.

-W kompak

-W tradicionale

--compat

--traditional Run në regjimin e pajtueshmërisë . Në regjimin e përputhshmërisë, gawk sillet në mënyrë identike me awks UNIX ; asnjë nga shtesat specifike të GNU-së nuk njihen. Përdorimi i --traditional është i preferuar mbi format e tjera të këtij opsioni. Shihni GNU EXTENSIONS , më poshtë, për më shumë informacion.

-W copyleft

-W copyright

--copyleft

--copyright Shtypni versionin e shkurtër të mesazhit GNU të të drejtave autoriale në dalje standarde dhe dalje me sukses.

-W dump-variables [ = file ]

--dump-variables [ = file ] Shtypni një listë të renditur të variablave globalë, llojet e tyre dhe vlerat përfundimtare në skedar . Nëse nuk ofrohet skedari , gawk përdor një skedar të quajtur awkvars.out në dosjen aktuale.

Duke pasur një listë të të gjithë variablave globale është një mënyrë e mirë për të kërkuar gabime tipografike në programet tuaja. Ju gjithashtu do të përdorni këtë opsion nëse keni një program të madh me shumë funksione dhe doni të jeni të sigurtë se funksionet tuaja nuk përdorin pa ndryshime variablave globalë që keni për qëllim të jeni lokal. (Ky është një gabim veçanërisht i lehtë për t'u bërë me emra të thjeshta të ndryshueshme si i , j , etj.)

-W ndihmë

-W përdorim

--ndihmë

--usage Shtypni një përmbledhje relativisht të shkurtër të opsioneve në dispozicion në prodhimin standard. (Për standardet e kodimit GNU , këto opsione shkaktojnë dalje të menjëhershme dhe të suksesshme.)

-W lint [ = fatale ]

- lint [ = fatal ] Jep paralajmërime për konstruksione që janë të dyshimta ose jo të lëvizshme në implementime të tjera të AWK. Me një argument opsional të paralajmërimeve fatale , paralajmërimet e bardhë bëhen gabime fatale. Kjo mund të jetë drastike, por përdorimi i saj me siguri do të inkurajojë zhvillimin e programeve më të pastra AWK.

-Gëna e vjetër

- Old-old Paralajmëroni rreth konstrukteve që nuk janë të transferueshme në versionin origjinal të Unix awk .

-W gen-po

--gen-po Skanoni dhe analizoni programin AWK dhe krijoni një skedar të formatit GNU .po në prodhim standard me shënime për të gjitha vargjet e lokalizueshme në program. Vetë programi nuk ekzekutohet. Shikoni shpërndarjen e GNU gettext për më shumë informacion mbi skedarët .po .

-W të dhëna jo-dhjetore

- Jo-decimal-data Njohja e vlerave oktal dhe heksadecimal në të dhëna të dhëna. Përdoreni këtë opsion me kujdes të madh!

-W posix

--posix Ky aktivitet kthehet në modalitetin e pajtueshmërisë , me kufizimet e mëposhtme shtesë:

*

\ x sekuencat e shpëtimit nuk njihen.

*

Vetëm hapësira dhe skeda veprojnë si ndarës në terren kur FS është vendosur në një hapësirë ​​të vetme, rreshta nuk ka.

*

Ju nuk mund të vazhdoni vijat pas ? dhe :.

*

Funkcioni sinonim për funksionin e fjalës nuk njihet.

*

Operatorët ** dhe ** = nuk mund të përdoren në vend të ^ dhe ^ = .

*

Funksioni fflush () nuk është i disponueshëm.

-W profil [ = prof_file ]

--profile [ = prof_file ] Dërgo të dhënat e profilit në prof_file . Parazgjedhja është awkprof.out . Kur të kandidojë me gawk , profili është vetëm një version "` goxha i shtypur '' i programit. Kur të ekzekutoni me pgawk , profili përmban numërimin e ekzekutimit të secilës deklaratë në program në diferencën e majtë dhe numërimin e thirrjeve të funksionit për secilin funksion të përcaktuar nga përdoruesi.

-W ri-interval

--re-interval Mundësoni përdorimin e shprehjeve të intervalit në përputhjen e rregullt të shprehjes (shih Shprehjet e rregullta , më poshtë). Shprehjet e intervaleve nuk ishin tradicionalisht të disponueshme në gjuhën AWK. Standardi POSIX i shtoi ato, për të bërë awk dhe egrep në përputhje me njëri-tjetrin. Sidoqoftë, përdorimi i tyre ka të ngjarë të thyejë programet e vjetra të AWK, kështu që ata vetëm u japin atyre nëse kërkohen me këtë opsion, ose kur - specifikohet saktësia .

-W program burim -teksti

--source program-text Përdor tekstin e programit si kodin burimor të programit AWK. Ky opsion lejon ndërthurjen e lehtë të funksioneve të bibliotekës (përdoret nëpërmjet opsioneve -f dhe --file ) me kodin burimor të futur në rreshtin e komandave. Kjo është menduar kryesisht për programet AWK të mesme dhe të mëdha të përdorura në skriptat shell.

-W version

- version Printoni versionin e informacionit për këtë kopje të veçantë të gawk në prodhimin standard. Kjo është e dobishme kryesisht për të ditur nëse kopja e tanishme e matësave në sistemin tuaj është e përditësuar në lidhje me çfarëdo që shpërndan Free Software Foundation. Kjo është gjithashtu e dobishme kur raporton mete. (Për standardet e kodimit GNU , këto opsione shkaktojnë dalje të menjëhershme dhe të suksesshme.)

- Sinjalizoni fundin e opsioneve. Kjo është e dobishme për të lejuar argumente të mëtejshme për programin AWK të fillojë me një `` - ''. Kjo është kryesisht për përputhshmëri me konventën e analizës së argumenteve që përdoret nga shumica e programeve të tjera POSIX.

Në modalitetin e përputhshmërisë, çdo opsion tjetër shënohet si i pavlefshëm, por në të kundërtën i injorohen. Në funksionimin normal, për sa kohë që teksti i programit është ofruar, opsionet e panjohura kalohen në programin AWK në grupin ARGV për t'u përpunuar. Kjo është veçanërisht e dobishme për drejtimin e programeve AWK nëpërmjet mekanizmit të ekzekutueshëm të përkthyesit `` #! ''.

EKZEKUTIMI I PROGRAMIT

Një program AWK përbëhet nga një sekuencë e deklaratave të veprimeve të modelit dhe përkufizimet opsionale të funksioneve.

model { deklaratat e veprimeve }

emri i funksionit ( lista e parametrave ) { statements }

Gawk së pari e lexon burimin e programit nga skedari i programeve ( programeve ) nëse specifikohen, nga argumentet në burim , ose nga argumenti i parë i jo opsioneve në rreshtin e komandave. Opsione -f dhe --ource mund të përdoren shumë herë në rreshtin e komandave. Gawk lexon tekstin e programit sikur gjithë teksti i skedarit të programit dhe tekstet e linjës së komandës të ishin bashkuar së bashku. Kjo është e dobishme për ndërtimin e bibliotekave të funksioneve AWK, pa pasur nevojë të përfshijë ato në çdo program të ri AWK që i përdor ato. Ai gjithashtu siguron aftësinë për të përzier funksionet e bibliotekës me programet e linjës së komandës.

Ndryshuesi i mjedisit AWKPATH përcakton një rrugë kërkimi për të përdorur kur gjenim burime të emërtuara me opsion -f . Nëse kjo variabël nuk ekziston, rruga e parazgjedhur është ".: / Usr / local / share / awk" . (Lista aktuale mund të ndryshojë, varësisht nga mënyra se si është ndërtuar dhe instaluar gawk .) Nëse një emër i skedarit të dhënë në opsion -f përmban një karakter `` / '', nuk kërkohet asnjë kërkim i rrugës.

Gawk ekzekuton programet AWK në rendin e mëposhtëm. Së pari, kryhen të gjitha detyrat e ndryshueshme të përcaktuara me anë të opsionit -v . Tjetra, gawk përpilon programin në një formë të brendshme. Pastaj, gawk ekzekuton kodin në bllokun BEGIN (nëse ka), dhe pastaj vazhdon të lexojë çdo skedar të emëruar në grupin ARGV . Nëse nuk ka skedarë të emëruar në rreshtin e komandës, gawk lexon hyrjen standarde.

Nëse një emër i skedarit në rreshtin e komandës ka formën var = val ai trajtohet si një detyrë e ndryshueshme. Var variabël do të përcaktohet vlera val . (Kjo ndodh pas çdo bllokimi të BEGIN-it .) Caktimi i variablave të rreshtit të komandës është më i dobishmi për caktimin dinamik të vlerave për variablat që AWK përdor për të kontrolluar se si ndarja e të dhënave në fusha dhe të dhëna. Është gjithashtu e dobishme për kontrollin e shtetit nëse nevojiten shumë kalime mbi një skedar të vetëm të të dhënave.

Nëse vlera e një elementi të veçantë të ARGV është i zbrazët ( "" ), atëherë kalon mbi të.

Për çdo rekord në të dhëna, analizat e matur për të parë nëse përputhet me çdo model në programin AWK. Për çdo model që regjistrohet, veprimi i ndërlidhur ekzekutohet. Modelet testohen në mënyrë që ato të ndodhin në program.

Së fundi, pasi të gjitha inputet janë shterur, gawk ekzekuton kodin në bllokun END (s) (nëse ka).

Variablat, Regjistrimet dhe Fushat

Variablat AWK janë dinamike; ato vijnë në ekzistencë kur ato përdoren së pari. Vlerat e tyre janë ose numra ose vargjet në pikat lundruese, ose të dyja, varësisht se si përdoren ato. AWK gjithashtu ka një varg dimensionale; vargjet me përmasa të shumëfishta mund të simulohen. Disa variabla të para-përcaktuar janë vendosur si një program shkon; këto do të përshkruhen si të nevojshme dhe të përmbledhura më poshtë.

të dhëna

Normalisht, të dhënat janë të ndara me shkronja të reja. Ju mund të kontrolloni se si të dhënat janë të ndara duke caktuar vlerat në variablin RS të integruar. Nëse RS është ndonjë person i vetëm, ai karakter ndan të dhënat. Përndryshe, RS është një shprehje e rregullt. Teksti në hyrjen që përputhet me këtë shprehje të rregullt e ndan rekordin. Megjithatë, në regjimin e përputhshmërisë, vetëm karakteri i parë i vlerës së saj të vargut përdoret për ndarjen e regjistrimeve. Nëse RS është vendosur në vargun null, atëherë të dhënat janë të ndara nga linja bosh. Kur RS është vendosur në vargun null, karakteri i vijës gjithmonë vepron si një ndarës në fushë, përveç çfarëdo vlere FS mund të ketë.

Fields

Pasi të lexohet çdo regjistrim i hyrjes, gawk ndan të dhënat në fusha , duke përdorur vlerën e ndryshores FS si ndarësin e fushës. Nëse FS është një karakter i vetëm, fushat janë të ndara nga ai karakter. Nëse FS është string null, atëherë çdo karakter individual bëhet një fushë e veçantë. Përndryshe, FS pritet të jetë një shprehje e plotë e rregullt. Në rastin e veçantë që FS është një hapësirë ​​e vetme, fushat janë të ndara me shkrirje të hapësirave dhe / ose skedave dhe / ose vijave të reja. (Por shiko diskutimin e --posix , më poshtë). SHËNIM: Vlera e IGNORECASE (shih më poshtë) gjithashtu ndikon në mënyrën se si ndahen fushat kur FS është një shprehje e rregullt dhe si regjistrohen të dhënat kur RS është shprehje e rregullt.

Nëse variabli FIELDWIDTHS është caktuar në një listë të numrave të ndarë të hapësirës, ​​çdo fushë pritet të ketë gjerësi fikse dhe gawk ndan regjistrimin duke përdorur gjerësitë e specifikuara. Vlera e FS është injoruar. Caktimi i një vlere të re FS-së anashkalon përdorimin e FIELDWIDTHS dhe rikthen sjelljen e paracaktuar.

Çdo fushë në regjistrimin e të dhënave mund të referohet nga pozicioni i saj, $ 1 , $ 2 , dhe kështu me radhë. $ 0 është rekord i tërë. Fushat nuk duhet të referohen nga konstante:

n = 5
printoni $ n

printon fushën e pestë në regjistrin e hyrjes.

NF ndryshore është vendosur në numrin e përgjithshëm të fushave në regjistrin e hyrjes.

Referencat në fushat që nuk ekzistojnë (dmth fushat pas $ NF ) prodhojnë null-string. Megjithatë, caktimi në një fushë joekzistuese (p.sh. $ (NF + 2) = 5 ) rrit vlerën e NF , krijon çdo fushë ndërhyrëse me string null si vlera e tyre dhe shkakton që vlera e $ 0 të ri-kompromentohet fushat që ndahen nga vlera e OFS . Referencat në fushat negative me numra shkaktojnë një gabim fatal. Zvogëlimi i NF shkakton vlerat e fushave që kalojnë vlerën e re që do të humbasë dhe vlera prej $ 0 që do të recomputohet, me fushat që ndahen nga vlera e OFS .

Caktimi i një vlere në një fushë ekzistuese shkakton që rekordi i tërë të rindërtohet kur $ 0 referohet. Ngjashëm, caktimi i një vlere në $ 0 shkakton që rekordi të ripërpunohet, duke krijuar vlera të reja për fushat.

Variablat e integruara

Ndryshoret e ndërtuara në Gawk janë:

argc

Numri i argumenteve të linjës së komandës (nuk përfshin opsionet për të kontrolluar, ose burimin e programit).

ARGIND

Indeksi në ARGV të skedarit aktual që po përpunohet.

argv

Arra e argumenteve të linjës së komandës. Grupi indeksohet nga 0 në ARGC - 1. Ndryshimi dinamik i përmbajtjes së ARGV mund të kontrollojë skedarët e përdorur për të dhënat.

BINMODE

Në sistemet jo POSIX, specifikon përdorimin e mënyrës `` binale '' për të gjithë I / O skedarin. Vlerat numerike të 1, 2 ose 3, specifikojnë se skedarët e hyrjes, skedarët e prodhimit ose të gjitha skedarët, duhet të përdorin I / O-në binar. Vlerat strikte të "r" ose "w" specifikojnë se skedarët e hyrjes, ose skedarët e prodhimit, duhet të përdorin I / O binar. Vlerat strikte të "rw" ose "wr" specifikojnë që të gjitha skedarët duhet të përdorin I / O binarë. Çdo vlerë tjetër e vargut trajtohet si "rw" , por gjeneron një mesazh paralajmërues.

CONVFMT

Formati i konvertimit për numrat, "% .6g" , sipas parazgjedhjes.

rrethoj

Një grup që përmban vlerat e mjedisit aktual. Grupi indeksohet nga variablat e mjedisit, secili element është vlera e atij ndryshore (p.sh., ENVIRON ["HOME"] mund të jetë / home / arnold ). Ndryshimi i këtij grupi nuk ndikon në mjedisin e parë nga programet të cilat gjenerohen përmes redirektimit ose funksionit të sistemit () .

ERRNO

Nëse ndodh një gabim i sistemit ose duke bërë një ridrejtim për getline , gjatë një leximi për getline , ose gjatë një afati () , atëherë ERRNO do të përmbajë një varg që përshkruan gabimin. Vlera është subjekt i përkthimit në vendet jo-angleze.

FIELDWIDTHS

Një listë e ndarë e hapësirës së bardhë të gjerë të fushave. Kur vendoset, gawk parses kontributin në fusha me gjerësi fikse, në vend që të përdorë vlerën e ndryshores FS si ndarës fushë.

FILENAME

Emri i skedarit aktual të futjes. Nëse nuk ekzistojnë skedarë në linjën e komandës, vlera e FILENAME është `` - ''. Megjithatë, FILENAME është i padefinuar brenda bllokut BEGIN (përveç nëse vendoset nga getline ).

FNR

Numri i regjistrimit të hyrjeve në skedarin aktual të futjes.

FS

Ndarësi i fushës së hyrjes, një hapësirë ​​sipas parazgjedhjes. Shih Fushat , më sipër.

IGNORECASE

Kontrollon ndjeshmërinë e të gjitha shprehjeve të rregullta dhe operacioneve të vargut. Nëse IGNORECASE ka një vlerë jo-zero, atëherë krahasimi i vargjeve dhe përputhja e modelit në rregullat, ndarja e fushës me FS , rekordi që ndan RS , shprehja e rregullt që përputhet me ~ dhe ! ~ , Dhe gensub () , gsub () , indeks () , ndarjet () , split () dhe sub () , të gjitha rastet e injorojnë kur bëjnë operacione të shprehjes së rregullt. SHENIM: Skedarimi i Array nuk ndikohet, as asort () nuk funksionon.

Kështu, nëse IGNORECASE nuk është e barabartë me zero, / aB / përputhet me të gjitha vargjet "ab" , "aB" , "Ab" dhe "AB" . Ashtu si me të gjitha variablat AWK, vlera fillestare e IGNORECASE është zero, kështu që të gjitha shprehjet e rregullta dhe operacionet e vargut normalisht janë të ndjeshme ndaj shkronjave të vogla. Nën Unix, përdoret ISO 8859-1 të plotë me karakter latin-1 kur injorohet rasti.

garzë

Ofron kontroll dinamik të opsionit - brenda nga një program AWK. Kur është e vërtetë, gavoku printon paralajmërime mbi ngjyrat. Kur është e rreme, nuk ka. Kur të caktohet vlera e vargut "fatale" , paralajmërimet për ngjyrosjen bëhen gabime fatale, pikërisht si - fjala = fatale . Çdo vlerë tjetër e vërtetë vetëm shtyp paralajmërimet.

NF

Numri i fushave në regjistrin aktual të futjes.

NR

Numri i përgjithshëm i të dhënave të dhëna deri më tani.

OFMT

Formati i daljes për numrat, "% .6g" , sipas parazgjedhjes.

OFS

Ndarja e fushës së prodhimit, një hapësirë ​​sipas parazgjedhjes.

ORS

Ndarja e rekordeve të prodhimit, sipas parazgjedhur një rresht.

PROCINFO

Elementet e këtij grupi ofrojnë qasje në informacione rreth programit AWK drejtimin. Në disa sisteme, mund të ketë elementë në grup, "grupi1" përmes "grupit n " për disa n , që është numri i grupeve plotësuese që procesi ka. Përdorni operatorin në provë për këto elemente. Janë të garantuara elementët e mëposhtëm:

PROCINFO [ "EGID"]

vlera e thirrjes sistemikegetegid (2).

PROCINFO [ "euid"]

vlera e thirrjes së sistemit geteuid (2).

PROCINFO [ "PF"]

"FS" në qoftë se ndarja e fushës me FS është në fuqi, ose "FUSHET E FUNDIT" në qoftë se ndarja e fushës me FIELDWIDTHS është në fuqi.

PROCINFO [ "gid"]

vlera e thirrjes sistemike getgid (2).

PROCINFO [ "pgrpid"]

ID grupi i procesit të procesit aktual.

PROCINFO [ "pid"]

ID e procesit të procesit aktual.

PROCINFO [ "ppid"]

ID-ja e procesit të prindit të procesit aktual.

PROCINFO [ "uid"]

vlera e thirrjes së sistemit getuid (2).

RS

Ndarësja e regjistrimeve të kontributeve, sipas parazgjedhur një rresht.

RT

Terminatori i rekordeve. Gawk vendos RT tek teksti i hyrjes që përputhet me karakterin ose shprehjen e rregullt të përcaktuar nga RS .

RSTART

Indeksi i karakterit të parë që përputhet me ndeshje () ; 0 nëse nuk ka ndeshje. (Kjo nënkupton që treguesit e karaktereve fillojnë në një.)

RLENGTH

Gjatësia e vargut që përputhet me ndeshje () ; -1 nëse nuk ka ndeshje.

SUBSEP

Karakteri që përdoret për të ndarë nënkripta të shumëfishta në elementët e grupit, sipas parazgjedhur "\ 034" .

TEXTDOMAIN

Fusha e tekstit të programit AWK; përdoret për të gjetur përkthime të lokalizuara për vargjet e programit.

vargjeve

Format janë nënvizuar me një shprehje midis kllapave katrore ( [ dhe ] ). Nëse shprehja është një listë e shprehjes ( expr , expr ...) atëherë indeksi i matjes është një varg i përbërë nga lidhja e vlerës (string) e secilës shprehje, e ndarë nga vlera e ndryshores SUBSEP . Kjo strukturë përdoret për të simuluar vargjet e shumëzuara. Për shembull:

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

cakton stringin "hello, world \ n" tek elementi i array x i cili indeksohet nga string "A \ 034B \ 034C" . Të gjitha vargjet në AWK janë asociative, dmth të indeksuara nga vlerat e vargut.

Operatori i posaçëm mund të përdoret në një deklaratë nëse ose kur për të parë nëse një grup ka një indeks të përbërë nga një vlerë e veçantë.

nëse (val në array) array print [val]

Nëse grupi ka subscripts të shumta, përdorni (i, j) në array .

Ndërtimi ndërtim mund të përdoret gjithashtu në një mënyrë për të përsëritur mbi të gjitha elementet e një koleksioni.

Një element mund të fshihet nga një grup duke përdorur deklaratën e fshirjes . Deklarata e fshirjes gjithashtu mund të përdoret për të fshirë të gjithë përmbajtjen e një grupi, vetëm duke specifikuar emrin e rrjetit pa një subscript.

Shtypja dhe konvertimi i ndryshueshëm

Variablat dhe fushat mund të jenë numra (pikat lundruese), ose vargjet, ose të dyja. Si vlerësohet vlera e një ndryshore varet konteksti i saj. Nëse përdoret në një shprehje numerike, do të trajtohet si një numër, nëse përdoret si një varg, do të trajtohet si një varg.

Për të detyruar një ndryshore që do të trajtohet si një numër, shtoni 0 për të; për ta detyruar atë të trajtohet si një varg, ta lidhë atë me vargun null.

Kur një varg duhet të konvertohet në një numër, konvertimi kryhet duke përdorur strtod (3). Një numër konvertohet në një varg duke përdorur vlerën e CONVFMT si një string format për sprintf (3), me vlerën numerike të variablit si argument. Megjithatë, edhe pse të gjithë numrat në AWK janë pika lundrues, vlerat integruese gjithmonë konvertohen si numra të plotë. Kështu, dhënë

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

variabla b ka një vlerë string të "12" dhe jo "12.00" .

Gawk bën krahasime si më poshtë: Nëse dy variabla janë numerikë, ato krahasohen numerikisht. Nëse një vlerë është numerike dhe tjetra ka një vlerë stringi që është një `` string numerik, atëherë krahasimet bëhen gjithashtu numerikisht. Përndryshe, vlera numerike konvertohet në një varg dhe kryhet një krahasim i vargut. Dy vargje krahasohen, natyrisht, si vargje. Vini re se standardi POSIX zbaton konceptin e `` string numerik '' kudo, madje edhe te konstante string. Sidoqoftë, kjo është qartësisht e pasaktë dhe nuk e bën këtë. (Fatmirësisht, kjo është fiksuar në versionin e ardhshëm të standardit.)

Vini re se konstante string, të tilla si "57" , nuk janë strings numerik, ato janë konstante string. Ideja e `` string numerike '' vlen vetëm për fusha, input inputline , FILENAME , elementët ARGV , elementet ENVIRON dhe elementët e një grupi të krijuar nga split () që janë strings numerik. Ideja themelore është se hyrja e përdoruesit , dhe vetëm hyrja e përdoruesit, që duket numerike, duhet të trajtohet në këtë mënyrë.

Variablat e parinalizuara kanë vlerën numerike 0 dhe vlerën e vargut "" (null ose bosh, string).

Konstante Octal dhe Hexadecimal

Duke filluar me versionin 3.1 të gawk, ju mund të përdorni konstante oktale dhe heksadecimale në stilin C në kodin burimor të programit AWK. Për shembull, vlera oktale 011 është e barabartë me decimalin 9 dhe vlera hexadecimal 0x11 është e barabartë me dhjetore 17.

Konstante string

Konstante string në AWK janë sekuenca të karaktereve të mbyllura midis kuotave të dyfishta ( " ). Brenda strings, sekuenca të caktuara të shpëtimit njihen si në C. Këto janë:

\\

Një backslash literal.

\ a

Karakteri `` alarm ''; zakonisht karakter ASCII BEL.

\ b

Backspace.

\ f

formë-ushqyer.

\ n

newline.

\ r

kthim ngarkese.

\ t

tab horizontale.

\ v

tab vertikale.

\ x shifrat hex

Karakteri i përfaqësuar nga vargu i shifrave hexadecimal pas \ x . Ashtu si në ANSIC, të gjitha shifrat hexadecimal pasuese konsiderohen pjesë e sekuencës së shpëtimit. (Ky tipar duhet të na tregojë diçka rreth dizajnit të gjuhës nga komiteti.) P.sh, "\ x1B" është karakteri ASCIIESC (ikje).

\ ddd

Karakteri i përfaqësuar nga sekuenca 1-, 2- ose 3-shifrore të shifrave oktale. P.sh. "\ 033" është karakteri ASCII ESC (ikje).

\ c

Karakteri literal c .

Sekuencat e shpëtimit mund të përdoren gjithashtu brenda shprehjeve të rregullta të rregullta (p.sh., / [\ t \ f \ n \ r \ v] / përputhet me karakteret e hapësirës së bardhë).

Në modalitetin e përputhshmërisë, personazhet e përfaqësuara nga sekuencat oktale dhe heksadekimale të shpëtimit trajtohen fjalë për fjalë kur përdoren në konstante të shprehjes së rregullt. Kështu, / a \ 52b / është ekuivalent me / a \ * b / .

Modelet dhe Veprimet

AWK është një gjuhë e orientuar nga linja. Modeli vjen së pari, dhe pastaj veprimi. Deklaratat e veprimeve janë të bashkangjitura në { dhe } . Ose modeli mund të mungojë, ose veprimi mund të mungojë, por natyrisht jo të dyja. Nëse modeli mungon, veprimi kryhet për çdo regjistrim të vetëm të të dhënave. Një veprim i zhdukur është i barabartë me

{print}

i cili shtyp të gjithë rekord.

Komentet fillojnë me karakterin `` # '', dhe vazhdojnë deri në fund të linjës. Linjat e zbrazëta mund të përdoren për të ndarë deklaratat. Normalisht, një deklaratë përfundon me një rresht të ri, megjithatë, ky nuk është rasti për linjat që përfundojnë në një ``, '', { , ? ,, && , ose || . Linjat që përfundojnë ose nuk kanë deklaratat e tyre vazhdojnë automatikisht në vijim. Në raste të tjera, një vijë mund të vazhdohet duke e përfunduar atë me një ', në të cilin rast rreshti i ri do të injorohet.

Deklaratat e shumëfishta mund të vendosen në një vijë duke i ndarë ato me një ``; ''. Kjo vlen për të dyja deklaratat brenda pjesës së veprimit të një palë veprimi model (rasti i zakonshëm), dhe vetë deklaratat e modelit.

modele

Format AWK mund të jenë një nga këto:

BEGIN END / shprehja e rregullt / model i shprehjes relacionale && model pattern || model model ? model : model ( model ) ! model model1 , model2

BEGIN dhe END janë dy lloje të veçanta të modeleve të cilat nuk testohen kundër inputit. Pjesët e veprimit të të gjitha modeleve BEGIN shkrihen sikur të gjitha deklaratat të ishin shkruar në një Bllok të vetëm BEGIN . Ato ekzekutohen para se të lexohet ndonjë nga të dhënat. Ngjashëm, të gjitha blloqet END janë shkrirë, dhe ekzekutohen kur të gjitha inputet janë shterur (ose kur ekzekutohet një deklaratë dalje ). Format BEGIN dhe END nuk mund të kombinohen me modele të tjera në shprehjet e modelit. Format BEGIN dhe END nuk mund të kenë pjesë të humbur të veprimit.

Për / shprehjet e rregullta / modelet, deklarata e lidhur realizohet për secilin rekord hyrje që përputhet me shprehjen e rregullt. Shprehjet e rregullta janë të njëjta me ato në egrep (1), dhe janë përmbledhur më poshtë.

Një shprehje relacionale mund të përdorë cilindo nga operatorët e përcaktuar më poshtë në seksionin për veprimet. Këto në përgjithësi testojnë nëse fusha të caktuara përputhen me shprehje të caktuara të rregullta.

&& , || , dhe ! operatorët janë logjikë DHE logjikë, OR, dhe logjikë NUK, respektivisht, si në C. Ato bëjnë vlerësimin e lidhjes së shkurtër, gjithashtu si në C dhe përdoren për kombinimin e shprehjeve më të primitive. Si në shumicën e gjuhëve, mund të përdoren kllapa për të ndryshuar rendin e vlerësimit.

Operatori?: Është si i njëjti operator në C. Nëse modeli i parë është i vërtetë atëherë modeli i përdorur për testim është modeli i dytë, përndryshe është i treti. Vetëm një nga modelet e dytë dhe të tretë vlerësohet.

Modeli1 , forma2 e një shprehje quhet një model varg . Ajo përputhet me të gjitha të dhënat e futura duke filluar me një rekord që përputhet me modelin 1 , dhe duke vazhduar deri në një rekord që përputhet me modelin2 , përfshirëse. Ajo nuk kombinon me ndonjë lloj tjetër të shprehjes së modelit.

Shprehjet e rregullta

Shprehjet e rregullta janë lloji i zgjeruar i gjetur në egrep . Ato përbëhen nga karaktere si më poshtë:

c

përputhet me mos-metakaraktorin c .

\ c

përputhet me karakterin literal c .

.

përputhet me çdo karakter duke përfshirë rreshtin e ri.

^

përputhet me fillimin e një vargu.

$

përputhet me fundin e një vargu.

[ abc ... ]

listën e karaktereve, përputhet me ndonjë prej shenjave abc ....

[^ abc ... ]

Lista e karaktereve të mohuara, përputhet me çdo karakter përveç abc ....

r1 | r2

alternim: ndeshje ose r1 ose r2 .

R1R2

concatenation: ndeshje r1 , dhe pastaj r2 .

r +

përputhet me një ose më shumë r .

r *

ndeshjet zero ose më shumë r .

r ?

ndeshjet zero ose një r .

( r )

grupimi: ndeshje r .

r { n }

r { n ,}

r { n , m } Një ose dy numra brenda rreshtat janë një shprehje interval . Nëse ka një numër në formatimin e teksteve, shprehja e rregullt e mëparshme r përsëritet n herë. Nëse ka dy numra të ndara me një presje, r përsëritet nm herë. Nëse ka një numër të ndjekur nga një presje, atëherë r përsëritet të paktën n herë.

Shprehjet e ndërprerjes janë të disponueshme vetëm në rast se është caktuar në vendin e komandës ose --posix ose --re-interval .

\ y

përputhet me vargun e zbrazët në fillim ose në fund të një fjale.

\ B

përputhet me vargun e zbrazët brenda një fjale.

\ <

përputhet me vargun e zbrazët në fillim të një fjale.

\>

përputhet me vargun e zbrazët në fund të një fjale.

\ w

përputhet me çdo karakter të përbërësit të fjalës (letër, shifër ose nënvizim).

\ W

përputhet me çdo karakter që nuk është përbërës fjala.

\ `

përputhet me vargun e zbrazët në fillim të një tampon (string).

\ '

përputhet me vargun e zbrazët në fund të një tampon.

Sekuencat e shpëtimit që janë të vlefshme në konstante string (shih më poshtë) janë gjithashtu të vlefshme në shprehje të rregullta.

Klasat e karaktereve janë një tipar i ri i futur në standardin POSIX. Një klasë e karakterit është një notë e veçantë për përshkrimin e listave të karaktereve që kanë një atribut specifik, por ku vetë personazhet aktuale mund të ndryshojnë nga vendi në vend dhe / ose nga skena e karaktereve në grupin e karaktereve. Për shembull, nocioni i asaj që është një karakter alfabetik ndryshon në SHBA dhe në Francë.

Një klasë e karakterit është e vlefshme vetëm në një shprehje të rregullt brenda kllapave të një liste të karaktereve. Klasat e karaktereve përbëhen nga [: , një fjalë kyçe që tregon klasën, dhe :] . Klasat e karaktereve të përcaktuara nga standarti POSIX janë:

[: alnum:]

Karaktere alfanumerike.

[: alpha:]

Karaktere alfabetike.

[: bosh:]

Hapësirë ​​ose karaktere tab.

[: Cntrl:]

Kontrollo karakteret.

[: shifror:]

Karaktere numerike.

[: grafik:]

Figurë që janë të shtypshëm dhe të dukshëm. (Një hapësirë ​​është e shtypshme, por jo e dukshme, ndërsa një a është të dyja.)

[: të ulët:]

Karaktere alfabetike me shkronja të vogla.

[: printimi:]

Karaktere të shtypura (karaktere që nuk janë karaktere të kontrollit.)

[: punct:]

Karaktere të pikësimit (shenja që nuk janë letra, shifra, karaktere të kontrollit ose karaktere hapsinore).

[:hapësirë:]

Karaktere hapësinore (të tilla si hapësirë, tab, dhe formfeed, për të përmendur disa).

[: sipërme:]

Karaktere alfabetike të lëndës së sipërme.

[: xdigit:]

Figurë që janë shifra hexadecimal.

Për shembull, para standardit POSIX, për t'iu përshtatur shkronjave alfanumerike, do të duhej të shkruanit / [A-Za-z0-9] / . Nëse karakteri juaj i karakterit kishte karaktere të tjerë alfabetik, kjo nuk do të përputhej me to, dhe nëse karakteri juaj i karaktereve të krahasohet ndryshe nga ASCII, kjo mund të mos përputhet me karakteret alfanumerike ASCII. Me klasat e karaktereve POSIX, mund të shkruani / [[: alnum:]] / , dhe kjo përputhet me shkronjat alfabetike dhe numerike në grupin tuaj të karaktereve.

Dy listat shtesë të veçanta mund të shfaqen në listat e karaktereve. Këto vlejnë për përcaktimet e karaktereve jo ASCII, të cilat mund të kenë simbole të vetme (të quajtura elementë bashkërendues ) që përfaqësohen me më shumë se një karakter, si dhe disa karaktere që janë ekuivalentë për mbledhjen ose klasifikimin. (P.sh., në frëngjisht, një `` e '' e qartë dhe një e` e theksuar me peshë janë ekuivalente.)

Simbolet e grumbullimit

Një simbol i mbledhjes është një element shumëzues i karakterit të mbyllur në [. dhe .] . Për shembull, nëse ch është element i mbledhjes, atëherë [[.ch.]] Është një shprehje e rregullt që përputhet me këtë element të mbledhjes, ndërsa [ch] është një shprehje e rregullt që përputhet me c ose h .

Klasat ekuivalente

Një klasë ekuivalence është një emër specifik lokal për një listë të karaktereve që janë ekuivalente. Emri është mbyllur në [= and =] . Për shembull, emri e mund të përdoret për të përfaqësuar të gjitha `` e '' `` e '' dhe `` e`. '' Në këtë rast, [[= e =]] është një shprehje e rregullt që ndeshje ndonjë nga e , e ' , ose e` .

Këto karakteristika janë shumë të vlefshme në vendet jo-angleze. Funksionet e bibliotekës që përdorin gawk për përputhjen e shprehjeve të rregullta aktualisht vetëm njohin klasat e karakterit POSIX; ata nuk i njohin simbolet kolektive ose klasat ekuivalente.

Operatorët \ y , \ B , \ < , \> , \ w , \ W , \ ` dhe \ ' janë specifike për gawk ; ato janë shtesa të bazuara në objekte në bibliotekat e shprehjes së rregullt GNU.

Opsionet e ndryshme të komandës kontrollojnë se si gavorkani interpreton personazhet në shprehje të rregullta.

Nuk ka opcione

Në rastin e parazgjedhur, gawk ofrojnë të gjitha objektet e shprehjeve të rregullta POSIX dhe operatorët e rregullt të shprehjes GNU përshkruar më sipër. Megjithatë, shprehjet e intervalit nuk mbështeten.

--posix

Vetëm shprehjet e rregullta POSIX janë të mbështetura, operatorët GNU nuk janë të veçantë. (Eg, \ w përputhet me një literal w ). Janë lejuar shprehjet në interval.

--traditional

Traditional Unix awk shprehje të rregullta përputhen. Operatorët GNU nuk janë të veçantë, shprehjet e intervalit nuk janë në dispozicion, dhe as nuk janë klasat e karakterit POSIX ( [[: alnum:]] dhe kështu me radhë). Karakteret e përshkruara nga sekuencat oktale dhe heksadekimale të shpëtimit trajtohen fjalë për fjalë, edhe nëse përfaqësojnë metakaraktë të shprehjes së rregullt.

--re-interval

Lejo shprehjet e intervalit në shprehje të rregullta, edhe nëse është dhënë - tradicionale .

veprimet

Deklaratat e veprimeve janë të mbyllura në formatimin e teksteve, { dhe } . Deklaratat e veprimeve konsistojnë në deklaratat e zakonshme të caktimit, të kushtëzuar dhe looping të gjetur në shumicën e gjuhëve. Operatorët, deklaratat e kontrollit, dhe deklaratat e hyrjes / prodhimit janë në dispozicion pasi ato në C.

operatorët

Operatorët në AWK, në mënyrë që të ulen përparësitë, janë

( ... )

grupim

$

Referenca në terren.

++ -

Rritje dhe zvogëlim, si prefiks dhe postfix.

^

Eksponentiation ( ** mund të përdoret gjithashtu, dhe ** = për operatorin e caktimit).

+ -!

Unary plus, minus unary, dhe negacion logjik.

* /%

Shumëzimi, ndarja dhe moduli.

+ -

Shtim dhe zbritje.

hapësirë

Lidhje string.

<>

<=> =

! = == Operatorët e rregullt relacional.

~! ~

Ndeshje e rregullt e shprehjes, ndeshje e mohuar. SHËNIM: Mos përdorni një shprehje konstante të rregullt ( / foo / ) në anën e majtë të një ~ ose ! ~ . Përdorni vetëm një në anën e djathtë. Shprehja / foo / ~ exp ka të njëjtin kuptim si (($ 0 ~ / foo /) ~ exp ) . Kjo zakonisht nuk është ajo që kishte për qëllim.

Array anëtarësimit.

&&

Logjike DHE.

||

Logjike OSE.

?:

Shprehja e kushtëzuar C. Kjo ka formën expr1 ? expr2 : expr3 . Nëse expr1 është e vërtetë, vlera e shprehjes është expr2 , përndryshe është expr3 . Vetëm një nga expr2 dhe expr3 është vlerësuar.

= + = - =

* = / =% = ^ = Caktimi. Të dyja caktimi absolut ( var = vlera ) dhe caktimi i operatorit (format e tjera) janë të mbështetura.

Deklaratat e Kontrollit

Deklaratat e kontrollit janë si më poshtë:

nëse deklarata ( kusht ) [ deklaratë tjetër ] ndërkohë deklarata ( kusht ) deklaron deklaratën ( kusht ) për deklaratën ( expr1 ; expr2 ; expr3 ) për ( var array ) deklaratë pushim vazhdo delete array [ index ] delete array exit [ shprehje ] deklarata }

Deklaratat e I / O

Deklaratat hyrëse / dalëse janë si më poshtë:

mbyllni ( file [ , si ] )

Mbylle skedarin, tubin ose bashkëprocesin. Opsionale si duhet të përdoret vetëm kur mbyllni një fund të një tubi me dy drejtime në një bashkëproçes. Duhet të jetë një vlerë string, ose "në" ose "nga" .

getline

Cakto $ 0 nga regjistrimi i ardhshëm i futjes; vendosur NF , NR , FNR .

getline < file

Cakto $ 0 nga regjistrimi i ardhshëm i skedarit ; vendosur NF .

getline var

Vendos var nga regjistrimi i ardhshëm i futjes; vendosur NR , FNR .

getline var < file

Vendos var nga regjistrimi i ardhshëm i skedarit .

komanda | getline [ var ]

Run komandën e tubimit të prodhimit ose në $ 0 ose var , si më sipër.

komanda | & getline [ var ]

Drejtoni komandën si një bashkëproçues që e tuboni outputin në $ 0 ose var , si më sipër. Bashkëprodhimet janë një shtrirje e lehtë.

tjetër

Ndalo përpunimin e regjistrimit aktual të hyrjes. Regjistri i ardhshëm i regjistrimit lexohet dhe përpunimi fillon me modelin e parë në programin AWK. Nëse arrihet fundi i të dhënave të hyrjes, ekzekutohen bllokimi i END (et), nëse ka.

nextfile

Ndalo përpunimin e skedarit aktual të futjes. Regjistri i ardhshëm i të dhënave lexohet nga skedari i ardhshëm i futjes. FILENAME dhe ARGIND janë përditësuar, FNR është rivendosur në 1, dhe përpunimi fillon me modelin e parë në programin AWK. Nëse arrihet fundi i të dhënave të hyrjes, ekzekutohen bllokimi i END (et), nëse ka.

shtyp

Shtyp rekordin e tanishëm. Regjistrimi i prodhimit përfundon me vlerën e ndryshores ORS .

shtyp expr-list

Shtyp shprehjet. Çdo shprehje ndahet nga vlera e variablit OFS . Regjistrimi i prodhimit përfundon me vlerën e ndryshores ORS .

print expr-list > skedar

Shtyp shprehjet në skedar . Çdo shprehje ndahet nga vlera e variablit OFS . Regjistrimi i prodhimit përfundon me vlerën e ndryshores ORS .

printf fmt, expr-list

Formati dhe printimi.

printf fmt, expr-list > skedar

Formatoni dhe printoni në skedar .

sistemi ( cmd-line )

Ekzekutoni cmd-line komandën, dhe kthejeni statusin e daljes. (Kjo mund të mos jetë e disponueshme në sistemet jo POSIX.)

fflush ( [ file ] )

Flusni çdo mbulesë që lidhen me skedarin e prodhimit të hapur ose skedarin e tubave. Nëse skedari mungon, atëherë prodhimi standard është i zbrazët. Nëse skedari është string null, atëherë të gjitha skedarët e prodhimit të hapur dhe tubacionet kanë flushed tyre buffer.

Redirections shtesë të prodhimit lejohen për printime dhe printf .

shtypni ... >> skedarin

shton prodhimin në skedar .

shtyp ... | komandë

shkruan në një tub.

shtyp ... | & komandë

i dërgon të dhënat në një bashkëproçes.

Komanda getline kthen 0 në fund të skedarit dhe -1 në një gabim. Pas një gabimi, ERRNO përmban një varg që përshkruan problemin.

SHENIM: Nese perdorni nje tub ose bashkeproces per getline , ose print ose printf brenda nje loop, duhet te perdorni close () per te krijuar instance te reja te komandes. AWK nuk mbyll automatikisht tubacionet ose bashkëproceset kur ata kthehen në EOF.

Deklarata e printf

Versioni AWK i deklaratës printf dhe funksioni sprintf () (shih më poshtë) pranojnë formatet e specifikimeve të konvertimit në vijim:

% c

Një karakter ASCII. Nëse argumenti i përdorur për % c është numerik, ai trajtohet si një karakter dhe shtypet. Përndryshe, argumenti supozohet të jetë një varg dhe shtypet vetëm karakteri i parë i atij vargu.

% d , % i

Një numër decimal (pjesa e plotë).

% e,% E

Një numër i pikës lundruese të formularit [-] d.dddddde [+ -] dd . Formati % E përdor E në vend të e .

% f

Një numër i pikës lundruese të formularit [-] ddd.dddddd .

% g,% G

Përdorni % e ose % f konvertimin, cilado që është më e shkurtër, me zerra të parëndësishëm të shtypur. Formati % G përdor % E në vend të % e .

% o

Një numër oktal unsigned (gjithashtu një numër i plotë).

% u Një numër decimal të panënshkruar (përsëri, një numër i plotë).

% s

Një varg karakterësh.

% x,% X

Një numër heksadecimal pa shenjë (një numër i plotë). Formati % X përdor ABCDEF në vend të abcdef .

%%

Një karakter i vetëm % ; asnjë argument nuk shndërrohet.

Opsionale, parametrat shtesë mund të qëndrojnë midis % dhe letrës së kontrollit:

numëro $

Përdorni argumentin e numërimit në këtë pikë në formatimin. Kjo quhet një specifikues pozicional dhe është menduar kryesisht për përdorim në versionet e përkthyera të formateve strings, jo në tekstin origjinal të një programi AWK. Është një shtrirje gafësh .

-

Shprehja duhet të lihet e justifikuar brenda fushës së saj.

hapësirë

Për konvertimet numerike, prefikoni vlerat pozitive me një hapësirë, dhe vlerat negative me një shenjë minus.

+

Shenja plus, e përdorur para modifikuesit të gjerësisë (shih më poshtë), thotë që gjithmonë të ofrojë një shenjë për konvertimet numerike, edhe nëse të dhënat duhet të jenë të formatuara pozitivisht. + E tejkalon modifikuesin e hapësirës.

#

Përdorni një "formë alternative" për letra të caktuara të kontrollit. Për % o , jepni një zero kryesore. Për % x , dhe % X , furnizoni një 0x ose 0X kryesor për një rezultat jo-zero. Për % e , % E dhe % f , rezultati gjithmonë përmban një pikë decimale. Për % g , dhe % G , zerat mbrapa nuk hiqen nga rezultati.

0

Një 0 kryesor (zero) vepron si një flamur, që tregon se produkti duhet të mbushet me zero në vend të hapësirave. Kjo vlen edhe për formatet e prodhimit jo numerik. Ky flamur ka vetëm një efekt kur gjerësia e fushës është më e gjerë se vlera që duhet shtypur.

gjerësi

Fusha duhet të jetë e mbushur me këtë gjerësi. Fusha normalisht është e mbushur me hapësira. Nëse flamuri 0 është përdorur, ajo është mbushur me zero.

. prec

Një numër që specifikon saktësinë e përdorimit gjatë shtypjes. Për formatet % e , % E dhe % f , kjo përcakton numrin e shifrave që dëshironi të shtypura në të djathtë të pikës dhjetore. Për formatet % g , dhe % G , përcakton numrin maksimal të shifrave të rëndësishme. Për formatet % d , % o , % i , % u , % x dhe % X , ai specifikon numrin minimal të shifrave për t'u printuar. Për % s , përcakton numrin maksimal të karaktereve nga vargu që duhet të printohet.

Gjerësia dinamike dhe aftësitë precize të rutinave ANSI C printf () mbështeten. A * në vend të specifikimeve të gjerësisë ose specifikimit shkakton që vlerat e tyre të merren nga lista e argumenteve në printf ose sprintf () . Për të përdorur një specifikues pozicioni me një gjerësi ose saktësi dinamike, jepni numërimin $ pas * në stringin e formatit. Për shembull, "% 3 $ * 2 $. * 1 $ s" .

Emrat e dosjeve speciale

Kur bën ridrejtimin I / O nga printimi ose printf në një skedar, ose nëpërmjet getline nga një skedar, gawk njeh disa emërime të veçanta brenda vendit. Këto skedarë të skedave lejojnë qasje në skedarët e hapur të skedarëve të trashëguar nga procesi prind i gawk (zakonisht skeleti). Këto emra mund të përdoren gjithashtu në rreshtin komandues për të emërtuar skedarët e të dhënave. Emrat e skedarëve janë:

/ dev / STDIN

Të dhëna standarde.

/ dev / Syswrite

Prodhimi standard.

/ dev / stderr

Prodhimi i gabimit standard.

/ dev / fd / n

Skedari i lidhur me descriptorin e skedarit të hapur n .

Këto janë veçanërisht të dobishme për mesazhet e gabimit. Për shembull:

printoni "Ju shpërtheu!" > "/ dev / stderr"

ndërsa përndryshe ju do të duhet të përdorni

printoni "Ju shpërtheu!" | "cat 1 & 2"

Emrat e skedarëve të posaçëm të mëposhtëm mund të përdoren me operatorin | & bashkëprocesor për krijimin e lidhjeve të rrjetit TCP / IP.

/ inet / tcp / lport / rhost / rport

Dhënash për lidhje TCP / IP në portin lokal të portit të hostit të largët rhost në portin e largët rport . Përdorni një port prej 0 që sistemi të zgjedhë një port.

/ inet / udp / lport / rhost / rport

Ngjashëm, por përdorni UDP / IP në vend të TCP / IP.

/ inet / raw / lport / rhost / rport

Rezervuar për përdorim të ardhshëm.

Emrat e skedarëve të tjerë të veçantë ofrojnë qasje në informacione rreth procesit të drejtimit të kullimit . Këto emrat e skedarëve tani janë të vjetëruara. Përdorni grupin PROCINFO për të marrë informacionin që ata japin. Emrat e skedarëve janë:

/ dev / pid

Leximi i këtij skedari kthen ID e procesit të procesit aktual, në decimal, përfunduar me një rresht të ri.

/ dev / ppid

Leximi i këtij skedari kthen ID-në e procesit mëmë të procesit aktual, në decimal, përfunduar me një rresht të ri.

/ dev / pgrpid

Leximi i këtij skedari kthen ID grupin e procesit të procesit aktual, në decimal, përfunduar me një rresht të ri.

/ dev / përdoruesi

Leximi i këtij skedari kthen një rekord të vetëm të përfunduar me një rresht të ri. Fushat janë të ndara me hapësira. $ 1 është vlera e thirrjes së sistemit getuid (2), $ 2 është vlera e thirrjes së sistemit geteuid (2), $ 3 është vlera e thirrjes system getgid (2), dhe $ 4 është vlera e getegid (2) thirrjen e sistemit. Nëse ka ndonjë fushë shtesë, ato janë ID-të e grupeve të kthyera nga grupet e fituara (2). Grupet e shumëfishta mund të mos mbështeten në të gjitha sistemet.

Funksionet numerike

AWK ka funksione aritmetike të ndërtuara në vijim:

atan2 ( y , x )

Jep arktangentin e y / x në radian.

cos ( expr )

Kthen kosinusin e expr , i cili është në radian.

exp ( expr )

Funksioni eksponencial.

int ( expr )

Shkurton në numër të plotë.

log ( expr )

Funksioni logaritmit natyror.

rand ()

Jep një numër të rastësishëm midis 0 dhe 1.

mëkati ( expr )

Jep sinusin e expr , i cili është në radian.

sqrt ( expr )

Funksioni rrënjë katror.

srand ( [ expr ] )

Përdor ekspr si një farë e re për gjeneratorin e numrave të rastësishëm. Nëse nuk ofrohet expr , përdoret koha e ditës. Vlera e kthimit është fara e mëparshme për gjeneratorin e numrave të rastësishëm.

Funksionet String

Gawk ka funksionet e mëposhtme të ndërthurura :

asort ( s [ , d ] )

Jep numrin e elementeve në sferën burimore s . Përmbajtja e s renditet duke përdorur rregullat normale të gawk për krahasimin e vlerave dhe indekset e vlerave të renditura të s zëvendësohen me numra të plotë sekuenciale duke filluar me 1. Nëse grupi i destinacionit opsional d është specifikuar, atëherë s përsëritet së pari në d , dhe pastaj d renditet, duke lënë indekset e burimit të burimit të pandryshuar.

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

Kërko në vargun e synuar t për ndeshjet e shprehjes së rregullt r . Nëse h është një varg që fillon me g ose G , atëherë zëvendësoni të gjitha ndeshjet e r me s . Përndryshe, h është një numër që tregon se cila ndeshje e r do të zëvendësohet. Nëse nuk furnizohet, përdoret $ 0 . Brenda tekstit të zëvendësimit s , sekuenca \ n , ku n është shifra nga 1 deri në 9, mund të përdoret për të treguar vetëm tekstin që përputhet me nën-shprehjen e mbylle në n '. Sekuenca \ 0 përfaqëson tërë tekstin e përputhshëm, ashtu siç bën edhe karakteri & . Ndryshe nga sub () dhe gsub () , vargu i modifikuar kthehet si rezultat i funksionit dhe vargu origjinal i synuar nuk ndryshohet.

gsub ( r , s [ , t ] )

Për çdo substring që përputhet me shprehjen e rregullt r në vargun t , zëvendëson vargun s dhe kthen numrin e zëvendësimeve. Nëse t nuk furnizohet, përdorni $ 0 . Një dhe në tekstin zëvendësues zëvendësohet me tekstin që në fakt u përputh. Përdorni \ & për të marrë një fjalëkalim & . (Kjo duhet të shtypet si "\\ &" ; shikoni GAWK: Programim efektiv AWK për një diskutim më të plotë të rregullave për & 's dhe backslashes në tekstin zëvendësues të sub () , gsub () dhe gensub () .)

indeksi ( s , t )

Jep indeksin e vargut t në vargun s , ose 0 nëse t nuk është i pranishëm. (Kjo nënkupton që treguesit e karaktereve fillojnë në një.)

gjatësia ( [ s ] )

Jep gjatësinë e vargut s , ose gjatësinë prej $ 0 nëse s nuk jepet.

ndeshje ( s , r [ , a ] )

Jep pozicionin në s ku shfaqet shprehja e rregullt r , ose 0 nëse r nuk është i pranishëm dhe vendos vlerat e RSTART dhe RLENGTH . Vini re se rendi i argumentit është i njëjtë me atë të operatorit: rresht . Nëse një grup a është dhënë, a është pastruar dhe pastaj elementët 1 deri n janë të mbushura me pjesët e s që përputhen me nënshkrimin përkatës të mbylli në r . Elementi 0'th i një përmban pjesën e s përputhet me të gjithë shprehjen e rregullt r .

ndarje ( s , a [ , r ] )

Ndan vargun s në grupin a në shprehjen e rregullt r , dhe kthen numrin e fushave. Nëse r është lënë jashtë, FS përdoret në vend të kësaj. Skeda a është pastruar më parë. Ndarjen sillet në mënyrë identike me ndarjen në terren, të përshkruar më lart.

sprintf ( fmt , expr-list )

Shtyp expr-list sipas fmt , dhe kthen vargun që rezulton.

strtonum ( str )

Shqyrton str , dhe e kthen vlerën e saj numerike. Nëse str fillon me një 0 kryesor, strtonum () supozon se str është një numër oktal. Nëse str fillon me një 0x ose 0X kryesor , strtonum () supozon se str është një numër heksadecimal.

nën ( r , s [ , t ] )

Ashtu si gsub () , por vetëm substringi i parë që përputhet zëvendësohet.

substr ( s , i [ , n ] )

Jep një substring më të ulët të n- fillon në i . Nëse n është lënë jashtë, përdoret pjesa tjetër e s .

tolower ( str )

Jep një kopje të rreshtit string, me të gjitha shkronjat e sipërme të shkronjave në str të përkthyera në homologët e tyre përkatës më të ulët. Karakteret jo-alfabetike mbeten të pandryshuara.

toupper ( str )

Jep një kopje të rreshtit str , me të gjitha shkronjat e vogla në str të përkthyera në homologët përkatës të sipërm të rasteve. Karakteret jo-alfabetike mbeten të pandryshuara.

Funksionet e kohës

Pasi që një nga përdorimet primare të programeve AWK është përpunimi i skedarëve të logaritjeve që përmbajnë informacionin e vulës së kohës, gawk siguron funksionet e mëposhtme për marrjen e vulave kohore dhe formatimin e tyre.

mktime ( datespec )

Rurnet datepec në një vulë kohë të njëjtën formë si u kthye nga systime () . Datatpec është një varg i formularit YYYY MM DD HH MM SS [DST] . Përmbajtja e vargut është gjashtë ose shtatë numra që përfaqësojnë përkatësisht vitin e plotë duke përfshirë shekullin, muajin nga 1 në 12, ditën e muajit nga 1 në 31, orën e ditës nga 0 në 23, minutën nga 0 në 59, dhe e dyta nga 0 në 60, dhe një flamur opsional i kursimit të ditës. Vlerat e këtyre numrave nuk duhet të jenë brenda intervaleve të specifikuara; për shembull, një orë e -1 do të thotë 1 orë para mesnatës. Kalendari i origjinës zero Gregorian është supozuar, me vitin 0 përpara vitit 1 dhe vitit -1 deri në vitin paraardhës 0. Koha supozohet të jetë në zonën lokale kohore. Nëse flamuri i kursimit të ditës është pozitiv, koha supozohet të jetë kohë e kursyer; nëse zero, koha supozohet të jetë kohë standarde; dhe nëse negativ (default), mktime () përpiqet të përcaktojë nëse koha e kursimit të ditës është në fuqi për kohën e caktuar. Nëse datespec nuk përmban elemente të mjaftueshme ose nëse koha që rezulton është jashtë intervalit, mktime () kthen -1.

strftime ( [ format [ , afati kohor ]] )

Formaton afatin kohor sipas specifikimit në format. Afati kohor duhet të jetë i të njëjtit formë që u kthye nga systime () . Nëse mungon koha e orës, përdoret koha e ditës. Nëse formati mungon, përdoret një format i parazgjedhur i barabartë me daljen e datës (1). Shihni specifikimet për funksionin strftime () në ANSI C për formatin e konvertimeve që garantohen të jenë në dispozicion. Një version publik i domain-it (3) dhe faqja e njeriut për të ardhur me gawk ; nëse ky version është përdorur për të ndërtuar gawk , atëherë të gjitha konvertimet e përshkruara në atë faqe të njeriut janë në dispozicion për të kontrolluar .

systime ()

Jep kohën aktuale të ditës si numri i sekondave që nga epoka (1970-01-01 00:00:00 UTC në sistemet POSIX).

Funksionet e Manipulimeve Bit

Duke filluar me versionin 3.1 të gawk , janë në dispozicion funksionet e mëposhtme të manipulimit bit. Ato punojnë duke konvertuar vlerat e pikës së notit me saktësi të dyfishtë në integers të gjatë të panënshtruar , duke bërë operacionin, dhe pastaj duke kthyer rezultatin në pikën lundruese. Funksionet janë:

dhe ( v1 , v2 )

Ktheni AND bitwise dhe vlerat e ofruara nga v1 dhe v2 .

compl ( val )

Ktheni mbulesën bitwise të val .

lshift ( val , count )

Ktheja vlerën e val , zhvendosur majtas nga bits numërimit .

ose ( v1 , v2 )

Kthejeni OR bitwise të vlerave të ofruara nga v1 dhe v2 .

rshift ( val , count )

Ktheja vlerën e val , e zhvendosur drejt nga bits numërimit .

xor ( v1 , v2 )

Kthejeni XOR bitwise të vlerave të ofruara nga v1 dhe v2 .

Funksionet e internacionalizimit

Duke filluar me versionin 3.1 të gawk , funksionet e mëposhtme mund të përdoren nga brenda programit tuaj AWK për përkthimin e vargjeve në kohën e duhur. Për detaje të plota, shikoni GAWK: Programim efektiv AWK .

bindtextdomain ( directory [ , domain ] )

Specifikon direktoriumin ku shfleton gawk për .mo skedarët, në rast se nuk do të vendosen ose nuk mund të vendosen në lokacionet `` standarde '' (p.sh. gjatë testimit). Ai kthen direktorinë ku domen i është "i lidhur".

Domeni i parazgjedhur është vlera e TEXTDOMAIN . Nëse direktoria është string null ( "" ), atëherë bindtextdomain () kthen lidhjen aktuale për domenin e dhënë.

dcgettext ( string [ , domain [ , kategori ]] )

Jep përkthimin e vargut në domenin e domenit të tekstit për kategorinë e kategorisë lokale. Vlera e parazgjedhur për domenin është vlera aktuale e TEXTDOMAIN . Vlera e parazgjedhur për kategorinë është "LC_MESSAGES" .

Nëse jepni një vlerë për kategori , duhet të jetë një varg i barabartë me një nga kategoritë e njohura lokale të përshkruara në GAWK: Programimi efektiv AWK . Ju gjithashtu duhet të furnizoni një domen të tekstit. Përdorni TEXTDOMAIN nëse dëshironi të përdorni domenin aktual.

dcngettext ( string1 , string2 , numri [ , domain [ , kategori ]] )

Jep formën shumës që përdoret për numrin e përkthimit të string1 dhe string2 në domenin e domenit të tekstit për kategorinë e kategorisë lokale. Vlera e parazgjedhur për domenin është vlera aktuale e TEXTDOMAIN . Vlera e parazgjedhur për kategorinë është "LC_MESSAGES" .

Nëse jepni një vlerë për kategori , duhet të jetë një varg i barabartë me një nga kategoritë e njohura lokale të përshkruara në GAWK: Programimi efektiv AWK . Ju gjithashtu duhet të furnizoni një domen të tekstit. Përdorni TEXTDOMAIN nëse dëshironi të përdorni domenin aktual.

FUNKSIONET E DEFINUARA NË USER

Funksionet në AWK janë përcaktuar si më poshtë:

emri i funksionit ( lista e parametrave ) { statements }

Funksionet ekzekutohen kur thirren nga brenda shprehjeve në modele ose veprime. Parametrat aktuale të dhëna në thirrjen e funksionit përdoren për të shkruar parametrat formalë të deklaruar në funksionin. Formatet kalojnë sipas referencës, variabla të tjerë kalojnë me vlerë.

Meqenëse funksionet nuk ishin fillimisht pjesë e gjuhës AWK, dispozita për variablat vendorë është mjaft e ngathët: ato deklarohen si parametra shtesë në listën e parametrave. Konventa është që të ndahen variablat lokalë nga parametrat e vërtetë nga hapësirat shtesë në listën e parametrave. Për shembull:

Funksioni f (p, q, a, b) # a dhe b janë lokale {...} / abc / {...; f (1,2); ...}

Mbyllja e majtë në një thirrje funksioni kërkohet që menjëherë të përcillet emri i funksionit, pa ndonjë hapësirë ​​të bardhë që ndërhyn. Kjo është për të shmangur një paqartësi sintaksore me operatorin e lidhjes. Ky kufizim nuk zbatohet për funksionet e përfshira në listë.

Funksionet mund të thërrasin njëri-tjetrin dhe mund të jenë rekursive. Parametrat e funksioneve të përdorura si variabla vendorë inicializohen në vargun zero dhe në numrin zero pas thirrjes së funksionit.

Përdorni kthimin expr për të kthyer një vlerë nga një funksion. Vlera e kthimit është e padefinuar në qoftë se nuk jepet ndonjë vlerë, ose nëse funksioni kthehet nga `` zbritja '' në fund.

Nëse - është dhënë një standard , gawk paralajmëron për thirrjet për funksione të padefinuara në kohën e analizës, në vend të kohës së ekzekutimit. Thirrja e një funksioni të pacaktuar në kohën e duhur është një gabim fatal.

Fjala func mund të përdoret në vend të funksionit .

DYNAMICALLY LOADING FUNKSIONET E RE

Duke filluar me versionin 3.1 të gawk , ju mund të shtoni në mënyrë dinamike funksione të reja të inkorporuara tek interpreti i zakonshëm running. Detajet e plota janë jashtë fushëveprimit të kësaj faqeje manuale; shih GAWK: Programim efektiv AWK për detajet.

zgjatje ( objekt , funksion )

Dinamikisht lidhni skedarin e përbashkët të objektit të quajtur nga objekti dhe aktivizoni funksionin në atë objekt, për të kryer inicializimin. Këto duhet të sigurohen si vargje. Jep vlerën e kthyer nga funksioni .

Ky funksion sigurohet dhe dokumentohet në GAWK: Programim efektiv AWK , por gjithçka në lidhje me këtë funksion ka gjasa të ndryshojë në lirimin e ardhshëm. Ne rekomandojmë fuqimisht që mos ta përdorni këtë veçori për ndonjë gjë që nuk dëshironi të rifilloni.

SINJALET

pgawk pranon dy sinjale. SIGUSR1 shkakton hedhjen e një skedari të profileve dhe funksioneve në skedarin e profilit, që është ose awkprof.out ose çfarëdo skedari që u emërua me opsionin --profile . Ajo pastaj vazhdon të kandidojë. SIGHUP e shkakton atë për të depozituar profilin dhe funksionin e grumbullimit të thirrjes dhe pastaj për të dalë.

SHEMBUJ

Printoni dhe renditni emrat e identifikimit të të gjithë përdoruesve: BEGIN {FS = ":"} {print $ 1 | "sort"} Numëroni linjat në një skedar: {nlines ++} END {print nlines} Parashtroni çdo rresht me numrin e saj në skedar: {print FNR, $ 0} Lidhni dhe numrin e vijës (një variacion në një temë): {print NR, $ 0}

internalizimit

Konstante string janë sekuenca të karaktereve të mbyllura në kuotat e dyfishta. Në mjediset që nuk flasin anglisht, është e mundur të shënosh vargje në programin AWK, duke kërkuar përkthimin në gjuhën natyrale amtare. Llojet e tilla shënohen në programin AWK me një nënshkrimin kryesor (`_ ''). Për shembull,

gawk 'BEGIN {print "hello, world"}'

gjithmonë shtyp hello, botë . por,

gawk 'BEGIN {print _ "hello, world"}'

mund të shtypni bonjour, monde në Francë.

Ka disa hapa të përfshirë në prodhimin dhe drejtimin e një programi lokalizues AWK.

1.

Shto një veprim BEGIN për të caktuar një vlerë në variablin TEXTDOMAIN për të vendosur domenin e tekstit në një emër të lidhur me programin tuaj.


BEGIN {TEXTDOMAIN = "myprog"}

Kjo lejon që të gjeni skedarin .mo të lidhur me programin tuaj. Pa këtë hap, gawk përdor domenin e mesazhevemesazheve , të cilat gjasa nuk përmbajnë përkthime për programin tuaj.

2.

Shënoni të gjitha vargjet që duhet të përkthehen me nënvizime kryesore.

3.

Nëse është e nevojshme, përdorni funksionin dcgettext () dhe / ose bindtextdomain () në programin tuaj, sipas rastit.

4.

Run gawk --gen-po -f myprog.awk> myprog.po për të gjeneruar një skedar .po për programin tuaj.

5.

Jepni përkthimet e duhura dhe ndërtoni dhe instaloni një skedar përkatës .mo .

Karakteristikat e internacionalizimit janë përshkruar në detaje të plota në GAWK: Programim efektiv AWK .

Kompatibiliteti i Posix

Qëllimi kryesor për gawk është pajtueshmëria me standardin POSIX, si dhe me versionin më të fundit të UNK-awk . Për këtë qëllim, gawk përfshin karakteristikat e mëposhtme të përdoruesve që nuk janë përshkruar në librin AWK, por janë pjesë e versionit të Bell Laboratories të awk dhe janë në standardin POSIX.

Libri tregon se caktimi i variablave të rreshtit të komandës ndodh kur awk ndryshe do të hapte argumentin si një skedar, i cili është pas ekzekutimit të bllokut BEGIN . Sidoqoftë, në implementimet e mëhershme, kur një caktim i tillë shfaqet para ndonjë emri skedari, caktimi do të ndodhte para se të ekzekutohej blloku BEGIN . Aplikimet erdhën në varësi të këtij funksioni. '' Kur awk u ndryshua për të përputhur dokumentacionin e saj, opsioni -v për caktimin e ndryshoreve para ekzekutimit të programit u shtua për të akomoduar aplikacione që vareshin nga sjellja e vjetër. (Ky tipar u pajtua nga të dy Laboratorët Bell dhe zhvilluesit GNU.)

Opsioni -W për veçoritë specifike të implementimit është nga standardi POSIX.

Kur argumentet e përpunimit, gawk përdor opsionin e veçantë `` - '' për të sinjalizuar fundin e argumenteve. Në modalitetin e përputhshmërisë, ai paralajmëron, por në të kundërt injoron opsionet e padefinuara. Në funksionimin normal, këto argumente kalohen në programin AWK për t'u përpunuar.

Libri AWK nuk përcakton vlerën e kthimit të srand () . Standardi i POSIX ka kthyer farën që po përdorte, për të lejuar mbajtjen e sekuencave të numrave të rastësishëm. Prandaj srand ()gawk gjithashtu kthen farën e saj aktuale.

Karakteristika të tjera të reja janë: Përdorimi i opsioneve të shumta -f (nga MKS awk ); grupi ENVIRON ; sekuencat e \ a , dhe \ v ikona (të bëra fillimisht në gawk dhe të ushqehen përsëri në versionin Bell Laboratories); funksione të integruaratolower () dhe toupper () (nga versioni Bell Laboratories); dhe specifikimet e ANSI C konvertimit në printf (bërë së pari në versionin Bell Laboratories).

Karakteristikat historike

Ekzistojnë dy karakteristika të implementimeve historike të AWK që mbështetin gawk . Së pari, është e mundur të thirret funksioni i ndërtuar në funksionin jo vetëm me asnjë argument, por edhe pa kllapa! Kështu,

a = Gjatësia # Algol i Shenjtë 60, Batman!

është njësoj si secili prej tyre

a = gjatësia ()
a = Gjatësia ($ 0)

Kjo veçori shënohet si `` e vjetëruar '' në standardin POSIX dhe gawk lëshon një paralajmërim për përdorimin e saj nëse - linja është specifikuar në rreshtin e komandës.

Tipar tjetër është përdorimi i ose të vazhdojë ose të thyer deklaratat jashtë trupit të një kohë , për , ose të bëjë loop. Implementimet tradicionale AWK e kanë trajtuar këtë përdorim si ekuivalent me deklaratën tjetër . Gawk mbështet këtë përdorim nëse - specifikuar - tradicionale .

Zgjerime GNU

Gawk ka një numër zgjerimesh për POSIX awk . Ato janë përshkruar në këtë seksion. Të gjitha zgjerimet e përshkruara këtu mund të çaktivizohen duke thirrur gawk me opsionin tradicional .

Karakteristikat e mëposhtme të gawk nuk janë në dispozicion në POSIX awk .

*

Nuk kërkohet asnjë kërkesë për skedarët e emëruar përmes opsionit -f . Prandaj variabli i mjedisit AWKPATH nuk është i veçantë.

*

Sekuenca e shpëtimit \ x . (Disabled me --posix .)

*

Funksioni fflush () . (Disabled me --posix .)

*

Aftësia për të vazhduar vijat pas ? dhe :. (Disabled me --posix .)

*

Konstante Octal dhe Hexadecimal në programet AWK.

*

Ndryshoret ARGIND , BINMODE , ERRNO , LINT , RT dhe TEXTDOMAIN nuk janë të veçanta.

*

IGNORECASE variable dhe efektet e saj anësore nuk janë të disponueshme.

*

Ndarja e fushës FIELDWIDTHS me gjerësi fikse dhe fikse.

*

Grupi PROCINFO nuk është i disponueshëm.

*

Përdorimi i RS si një shprehje e rregullt.

*

Emrat e veçantë të skedarëve në dispozicion për ridrejtimin e I / O nuk njihen.

*

& Operatori për krijimin e bashkë proceseve.

*

Aftësia për të ndarë karakteret individuale duke përdorur stringin null si vlera e FS , dhe si argumenti i tretë për të ndarë () .

*

Argumenti i dytë opsional për funksionin e afërt () .

*

Argumenti i tretë opsional për funksionin e ndeshjes () .

*

Aftësia për të përdorur specifikuesit e pozicionit me printf dhe sprintf () .

*

Përdorimi i grupit të fshirë për të fshirë të gjithë përmbajtjen e një koleksioni.

*

Përdorimi i nextfile për të braktisur përpunimin e skedarit aktual të futjes.

*

Dhe () , asort () , bindtextdomain () , compl () , dcgettext () , gensub () , lshift () , mktime () , ose () , rshift () , strftime () , strtonum () dhe xor () .

*

Strings lokalizable.

*

Shtimi i funksioneve të reja të ndërtuara në mënyrë dinamike me funksionin extension () .

Libri AWK nuk përcakton vlerën e kthimit të funksionit të ngushtë () . Afër () Gawk 's () kthen vlerën nga fclose (3), ose pclose (3), kur mbyllni një file ose tub të prodhimit, respektivisht. Ai e kthen statusin e daljes së procesit kur mbyllet një tub i hyrjes. Vlera e kthimit është -1 nëse skedari i përmendur, tubi ose bashkëprocesi nuk u hap me një ridrejtim.

Kur shuhet me opsionin --thraditional , nëse argumenti fs në opsionin -F është `` t '', atëherë FS është vendosur në karakterin e tabit. Vini re se shtypja e gawk-F \ t ... thjesht shkakton shell që të citojë `` t, '', dhe nuk kalon `` \ t '' në opsionin -F . Meqë ky është një rast tepër i shëmtuar, nuk është sjellja e paracaktuar. Kjo sjellje gjithashtu nuk ndodh nëse --posis është specifikuar. Për të marrë me të vërtetë një karakter tab si ndarës në terren, është mirë të përdorësh kuotat e vetme: gawk-F '\ t' ....

Shihni komandat e tjera : prisni , lp , complete , execv , getfacl , ioctl , uniq , rmmod , pvcreate , rsh , unix2dos , cal , fs , cd , iwpriv , swapon , autofs , , të cilët , iwconfig , ifconfig , vgdisplay , hapur , lsmod , ntohs , mailq , vrasin , wtmp