Skip to main content

Gawk - Linux Command - Unix komandu

Anonim

Nosaukums

gawk - modeļa skenēšanas un apstrādes valoda

Kopsavilkums

gawk POSIX vai GNU stila opcijas -f programmas failu -- fails …gawk POSIX vai GNU stila opcijas -- programmas teksts fails …

pgawk POSIX vai GNU stila opcijas -f programmas failu -- fails …pgawk POSIX vai GNU stila opcijas -- programmas teksts fails …

Apraksts

Gawk ir GNU projekta AWK programmēšanas valodas ieviešana. Tas atbilst valodas definīcijai POSIX 1003.2 Command Language un Utilities Standard versijā. Savukārt šī versija ir balstīta uz aprakstu AWK programmēšanas valoda , ko Aho, Kernighan un Weinberger, ar papildu funkcijām, kas atrodamas UNIX sistēmas 4. izlaiduma versijā awk . Gawk piedāvā arī jaunākās Bell Laboratories awk paplašinājumi un vairāki GNU specifiski paplašinājumi.

Pgawk ir profilēšanas versija gawk . Tas ir vienāds visos gadījumos gawk , izņemot to, ka programmas darbojas lēnāk, un tajā automātiski tiek izveidots izpildes profils failā awkprof.out kad tas ir izdarīts. Skatīt --profils zemāk.

Komandrinda sastāv no opcijām uz gawk pati AWK programmas teksts (ja tas netiek piegādāts, izmantojot -f vai --file opcijas) un vērtības, kas jāpiedāvā programmā ARGC un ARGV iepriekš definēti AWK mainīgie.

Opcijas formāts

Gawk opcijas var būt vai nu tradicionālās POSIX vienas burtu opcijas, vai arī GNU stila gari risinājumi. POSIX opcijas sākas ar vienu `` - '', bet garās opcijas sākas ar `` - ''. Gari varianti ir paredzēti gan GNU raksturīgajām funkcijām, gan POSIX pilnvarotajām funkcijām.

Pēc POSIX standarta gawk -specifiskas iespējas tiek piegādātas, izmantojot argumentus -W iespēja. Vairāki -W iespējams piegādāt opcijas -W Opcijai ir atbilstoša garā iespēja, kā aprakstīts zemāk. Argumenti par ilgtermiņa iespējām ir vai nu pievienotas ar iespēju, izmantojot = parakstīt, bez interfeisa atstarpēm, vai arī tos var sniegt nākamajā komandrindas argumentā. Garās iespējas var tikt saīsinātas, ja saīsinājums joprojām ir unikāls.

Iespējas

Gawk akceptē šādas iespējas, kas uzskaitītas alfabētiskā secībā.

-F fs

- lauks-separators fs Izmantojiet fs ievades lauka atdalītājam (vērtība FS iepriekš definēts mainīgais).

-v var = val

- piešķirt var = val Piešķiriet vērtību val uz mainīgo var , pirms sākas programmas izpilde. Šādas mainīgas vērtības ir pieejamas BEGIN AWK programmas bloks.

-f programmas failu

--file programmas failu Lasīt AWK programmas avotu no faila programmas failu , nevis no pirmā komandrindas argumenta. Vairāki -f (vai --file) var izmantot opcijas.

-mf NNN

-mr NNN Iestatiet dažādus vērtības atmiņas ierobežojumus NNN . The f karogs nosaka maksimālo lauku skaitu un r karodziņš nosaka maksimālo ieraksta lielumu. Šie divi karogi un -m variants ir no Bell Laboratories pētniecības versijas UNIX awk . Tos ignorē gawk , kopš gawk nav iepriekš noteiktu ierobežojumu.

-W kompat

-W tradicionāli

- compat

- tradicionāls Ieskriet saderība režīms Saderības režīmā gawk uzvedas vienādi ar UNIX awk ; neviens no GNU specifiskajiem paplašinājumiem nav atpazīts. Pielietojums - tradicionāls ir priekšroka salīdzinājumā ar citām šīs opcijas formām. Skatīt GNU paplašinājumi, tālāk, lai iegūtu plašāku informāciju.

-Kopilefts

-W autortiesības

--copyleft

- autortiesības Drukājiet GNU autortiesību informācijas īsās versijas standarta izvadi un veiksmīgi izejiet.

-W dump-mainīgie= fails

- dump-mainīgie= fails Drukā šķiroto globālo mainīgo sarakstu, to veidus un gala vērtības fails . Ja nē fails ir nodrošināts, gawk izmanto failu ar nosaukumu awkvars.out pašreizējā direktorijā.

Visu globālo mainīgo saraksts ir labs veids, kā meklēt drukāšanas kļūdas jūsu programmās. Jūs arī izmantotu šo opciju, ja jums ir liela programma, kurā ir daudz funkciju, un vēlaties būt pārliecināti, ka jūsu funkcijas netīši neizmanto globālos mainīgos, kas domāti vietējiem. (Tas ir īpaši viegli kļūdīties izdarīt ar vienkāršiem mainīgo nosaukumiem, piemēram i, j, un tā tālāk.)

-W palīdzi

-W lietošana

--palīdzība

--izmantot Izdrukājiet relatīvi īsu kopsavilkumu par pieejamām opcijām standarta izvadē. (Uz GNU kodēšanas standarti , šīs opcijas izraisa tūlītēju veiksmīgu iziešanu.)

-W lint= letāls

--lints= letāls Sniedziet brīdinājumus par konstrukcijām, kas ir apšaubāmas vai nav pārnēsājamas citiem AWK implementācijām. Ar neobligātu argumentu par letāls, meltas brīdinājumi kļūst par letālu kļūdām. Tas var būt krasi, bet tā izmantošana noteikti veicinās tīrāku AWK programmu izstrādi.

-Viņš ir vecs

- vecs Sniedziet brīdinājumus par konstrukcijām, kas nav pārnēsājamas ar sākotnējo Unix versiju awk .

-W gen-po

--gen-po Pārbaudiet un analizējiet AWK programmu un ģenerējiet GNU .po standarta izvades formāta failu ar ierakstiem par visām lokizējamām virknēm programmā. Programma pati par sevi nav izpildīta. Skatiet GNU gettext lai iegūtu vairāk informācijas par .po faili.

-W bez decimāldaļu datiem

- bez decimāldaļas datiem Ievaddatiem atpazīst astotajā un heksadecimālajā vērtībā. Izmantojiet šo opciju ar lielu piesardzību!

-W posix

--posiks Tas ieslēdzas saderība režīmā ar šādiem papildu ierobežojumiem:

*

x aizbēgtības sekvences netiek atpazītas.

*

Tikai telpa un cilne darbojas kā lauku atdalītāji, kad FS ir iestatīts uz vienu atstarpi, jauna līnija nav.

*

Jūs nevarat turpināt līnijas pēc ? un :.

*

Sinonīms funkcija par atslēgvārdu funkcija nav atzītas.

*

Uzņēmēji ** un **= nevar izmantot vietā ^ un ^=.

*

The fflush () funkcija nav pieejama.

-W profils= prof_file

--profils= prof_file Sūtīt profilēšanas datus uz prof_file . Noklusējums ir awkprof.out. Kad palaist ar gawk , profils ir tikai `` diezgan izdrukāta '' programmas versija. Kad palaist ar pgawk , profils satur katra programmas paziņojuma izpildes skaitu kreisajā malā un funkciju zvanu skaitu katrai lietotāja definētai funkcijai.

-W atkārtots intervāls

- intervāls Iespējot izmantot intervāla izteiksmes regulāro izteiksmju saskaņošanā (sk Regulāras izteiksmes, tālāk). Intervāla izteiksmes tradicionāli nav pieejamas AWK valodā. POSIX standarts tos pievienoja, lai veiktu awk un egrep savstarpēji saskaņoti. Tomēr to izmantošana varētu pārtraukt vecās AWK programmas, tāpēc gawk tikai tos nodrošina, ja tie tiek pieprasīti ar šo iespēju vai kad --posiks ir norādīts.

-W avots programmas teksts

- resurss programmas teksts Izmantojiet programmas teksts kā AWK programmas avota kods. Šī opcija ļauj ērti sasaistīt bibliotēkas funkcijas (izmanto ar -f un --file opcijas) ar kodu, kas ievadīts komandrindā. Tas ir paredzēts galvenokārt vidēja vai liela AWK programmām, ko izmanto čaulas skriptus.

-W versija

- pārveide Šīs konkrētās eksemplāra drukas versijas informācija gawk par standarta izvadi. Tas ir noderīgi, galvenokārt, lai zinātu, vai pašreizējā gawk jūsu sistēma ir atjaunināta, ņemot vērā to, ko brīvās programmatūras fonds izplata. Tas ir noderīgi, ziņojot par kļūdām. (Uz GNU kodēšanas standarti , šīs opcijas izraisa tūlītēju veiksmīgu iziešanu.)

-- Signāls opciju beigas. Tas ir noderīgi, lai atļautu turpmākus argumentus AWK programmai, lai sāktu ar `` - ''. Tas galvenokārt ir konsekvence ar argumentācijas parsēšanas konvenciju, ko izmanto lielākajā daļā citu POSIX programmu.

Saderības režīmā visas citas opcijas tiek atzīmētas kā nederīgas, bet citādi tiek ignorētas. Parastās darbības laikā, kamēr programmas teksts ir piegādāts, nezināmas opcijas tiek nodotas programmā AWK ARGV masīvs apstrādei. Tas ir īpaši noderīgi, lai palaistu AWK programmas ar izpildāmā tulkotāja `` #! '' Mehānismu.

AWK PROGRAMMAS IZPILDE

AWK programma sastāv no secību par modeļa darbības paziņojumiem un izvēles funkciju definīcijām.

modelis { darbības paziņojumi }funkcija vārds ( parametru saraksts ) { paziņojumi }

Gawk vispirms lasa programmas avotu no programmas failu (s), ja norādīts, no argumentiem uz - resurss, vai no pirmā ne-opcijas argumenta komandrindā. The -f un - resurss opcijas var tikt izmantotas vairākas reizes komandrindā. Gawk nolasa programmas tekstu tā, it kā viss programmas failu S un komandrindas avota teksti tika sapludināti kopā. Tas ir noderīgs, lai izveidotu AWK funkciju bibliotēkas, neiekļaujot tos katrā jaunā AWK programmā, kas tos izmanto. Tas arī nodrošina iespēju apvienot bibliotēkas funkcijas ar komandrindas programmām.

Vides mainīgais AWKPATH norāda meklējamo ceļu, kuru izmanto, meklējot avota failus, kas nosaukti ar -f iespēja. Ja šis mainīgais neeksistē, noklusējuma ceļš ir".: / usr / local / share / awk". (Faktiskais direktorijs var atšķirties atkarībā no tā, kā gawk tika uzcelta un instalēta.) Ja faila nosaukums piešķirts -f opcija satur `` / '' rakstzīmi, ceļa meklēšana netiek veikta.

Gawk izpilda AWK programmas šādā secībā. Pirmkārt, visi mainīgie uzdevumi, kas norādīti, izmantojot -v iespēja tiek veikta. Nākamais, gawk apkopo programmu iekšējā formā. Tad gawk izpilda kodu BEGIN bloks (-i) (ja tāds ir), un pēc tam turpina lasīt katru failā, kas minēts ARGV masīvs. Ja komandrindā nav failu nosaukumu, gawk nolasa standarta ievadi.

Ja komandrindas faila nosaukums ir veidlapa var = val to uzskata par mainīgu uzdevumu. Mainīgais var tiks piešķirta vērtība val . (Tas notiek pēc jebkura BEGIN bloks (-i) ir palaists.) Komandrindas mainīgā piešķiršana ir visnoderīgākā, lai dinamiski piešķirtu vērtības mainīgajiem lielumiem, kurus AWK izmanto, lai kontrolētu, kā ievade tiek sadalīta laukos un ierakstos. Tas ir arī noderīgs, lai kontrolētu stāvokli, ja vienā datu failā ir nepieciešamas vairākas caurlaides.

Ja kāda konkrēta elementa vērtība ir ARGV ir tukšs (''), gawk izlaiž to.

Par katru ieraksta ierakstu gawk pārbauda, ​​vai tas atbilst jebkuram modelis AWK programmā. Katram modelim, par kuru ieraksts atbilst, tas ir saistīts rīcība tiek izpildīts. Modeļus testē tādā secībā, kādā tie notiek programmā.

Visbeidzot, pēc tam, kad viss ieguldījums ir izsmelts, gawk izpilda kodu END bloks (-i) (ja tāds ir).

Mainīgie, ieraksti un lauki

AWK mainīgie ir dinamiski; tie sākas, kad tos pirmo reizi izmanto. Viņu vērtības ir vai nu peldošā komata skaitļi vai virknes, vai abi, atkarībā no tā, kā tie tiek izmantoti. AWK ir arī vienas dimensijas masīvi; Var tikt simulēti masīvi ar vairākiem izmēriem. Vairāki iepriekš definēti mainīgie tiek iestatīti kā programmas palaišana; tie tiks aprakstīti kā vajadzīgi un apkopoti turpmāk.

Ieraksti

Parasti ieraksti tiek atdalīti ar jaunām rakstzīmēm. Jūs varat kontrolēt, kā ieraksti tiek atdalīti, piešķirot vērtībām iebūvētajam mainīgajam RS. Ja RS ir jebkura viena rakstzīme, šis raksturs atdala ierakstus. Pretējā gadījumā RS ir regulāra izteiksme. Teksts ievadei, kas atbilst šai regulārajai izteiksmei, atdala ierakstu. Tomēr saderības režīmā ierakstu atdalīšanai izmanto tikai tās virknes vērtības pirmo rakstzīmi. Ja RS ir iestatīts uz nulles virkni, tad ieraksti tiek atdalīti ar tukšām rindām. Kad RS ir iestatīts uz nulles virkni, jaunais rakstzīme vienmēr darbojas kā lauka atdalītājs papildus jebkurai vērtībai FS var būt.

Lauki

Kad katrs ievades ieraksts tiek lasīts, gawk sadalīt ierakstu lauki , izmantojot vērtību FS mainīgais kā lauka atdalītājs. Ja FS ir viens raksturs, lauki ir atdalīti ar šo rakstzīmi. Ja FS ir nulles virkne, tad katrs atsevišķais raksturs kļūst par atsevišķu lauku. Pretējā gadījumā FS ir paredzama pilnīga regulārā izteiksme. Īpašā gadījumā, ka FS ir viena telpa, lauki atdala ar atstarpēm un / vai cilnēm un / vai jaunām līnijām. (Bet skatiet diskusiju par --posiks, tālāk). PIEZĪME: Vērtība IGNORECASE (sk. tālāk) ietekmē arī lauku sadalījumu, kad FS ir regulāra izteiksme un kā ieraksti atdala, kad RS ir regulāra izteiksme.

Ja FIELDWIDTHS mainīgais ir iestatīts uz atstarpi atdalītu skaitļu sarakstu, katram laukam ir fiksēts platums, un gawk sadalīt ierakstu, izmantojot norādītos platumus. Vērtība FS tiek ignorēts. Jauna vērtība piešķirta FS ignorē lietošanu FIELDWIDTHS, un atjauno noklusējuma darbību.

Katram ievades ieraksta laukam var atsaukties pēc tā pozīcijas, $1, $2, un tā tālāk. $0 ir viss ieraksts. Konstantes nedrīkst atsaukties uz laukiem:

n = 5izdrukāt $ n

izdrukā ieejas ieraksta piekto lauku.

Mainīgais NF ir iestatīts uz kopējo ievades ieraksta lauku skaitu.

Atsauces uz neeksistējošiem laukiem (t.i., laukus pēc $ NF) rada nulles virkni. Tomēr, piešķirot neeksistējošu lauku (piemēram, $ (NF + 2) = 5) palielina vērtību NF, izveido visus ievades laukus ar nulles virkni kā to vērtību un rada vērtību $0 kas jāpārrēķina, atdalot laukus ar vērtību OFS. Atsauces uz negatīviem numurētiem laukiem rada fatālu kļūdu. Samazinājums NF izraisa lauka vērtības, kas pārsniedz jauno vērtību, kas zaudēta, un vērtību $0 kas jāpārrēķina, atdalot laukus ar vērtību OFS.

Nosakot vērtību esošam laukam, viss ieraksts tiek pārbūvēts, kad $0 ir atsauce. Līdzīgi, piešķirot vērtību vērtību $0 izraisa ierakstu pārplānošanu, radot jaunas vērtības laukiem.

Iebūvētie mainīgie

Gawk 's iebūvēti mainīgie ir:

ARGC

Komandrindas argumentu skaits (neietver opcijas uz gawk , vai programmas avots).

ARGIND

Indekss iekšā ARGV no pašreizējā apstrādājamā faila.

ARGV

Komandrindas argumentu masīvs. Masīvs ir indeksēts no 0 līdz ARGC - 1. Dinamiskā satura mainīšana ARGV var kontrolēt failus, ko izmanto datiem.

BINMODE

Uz sistēmām, kas nav POSIX, precizē visu failu I / O režīmu `` binārā '' režīma lietošanu. Ciparu vērtības 1, 2 vai 3, norāda, ka attiecīgi ievades failiem, izvades failiem vai visiem failiem jāizmanto binārais I / O. String vērtības "r", vai "w" norādiet, ka attiecīgi ievades failiem vai izvades failiem jāizmanto binārais I / O. String vērtības "rw" vai "wr" norādiet, ka visiem failiem jāizmanto binārais I / O. Jebkura cita virknes vērtība tiek uzskatīta par "rw", bet ģenerē brīdinājuma ziņojumu.

CONVFMT

Ciparu konversijas formāts, "% .6g", pēc noklusējuma.

ENVIRON

Masīvs, kurā ir esošās vides vērtības. Masīvu indeksē vides mainīgie, katrs elements ir šī mainīgā vērtība (piemēram,ENVIRON "HOME" varētu būt / home / arnold) Mainot šo masīvu neietekmē vidi, ko uztver programmas, kas gawk nerunā, izmantojot novirzīšanu vai sistēma ()funkcija.

ERRNO

Ja rodas sistēmas kļūda, veicot novirzīšanu uz getline, lasīšanas laikā getlinevai laikā aizvērt (), tad ERRNO būs virkne, kurā aprakstīta kļūda. Vērtība ir atkarīga no tulkojuma vietnēs, kas nav angļu valodas.

FIELDWIDTHS

Laukuma platumu saraksts, kas ir atdalīts ar baltu laukumu. Ja tas ir iestatīts, gawk parsē ievadi fiksēta platuma laukos, nevis izmanto vērtību FS mainīgais kā lauka atdalītājs.

FAILA NOSAUKUMS

Pašreizējā ievades faila nosaukums.Ja komandrindā nav norādīti faili, vērtība FAILA NOSAUKUMS ir `` - ''. Tomēr FAILA NOSAUKUMS ir nenoteikts iekšpusē BEGIN bloks (ja vien tas nav noteikts ar getline).

FNR

Ievades ieraksta numurs pašreizējā ievades failā.

FS

Ievade lauku atdalītājs, pēc noklusējuma atstarpe. Skatīt Lauki, virs.

IGNORECASE

Kontrolē visu regulāro izteiksmju un virkņu darbību jutību. Ja IGNORECASE ir vērtība, kas nav nulle, pēc tam virknes salīdzinājumi un modeļu saskaņošana noteikumos, laukā, kas sadalās ar FS, ieraksts atdalot ar RS, regulāra izteiksme atbilst ~un !~, un gensub (), gsub (), indekss (), spēles (), split (), un sub () iebūvētās funkcijas ignorē gadījumu, veicot regulāras izteiksmes darbības. PIEZĪME: Array subscripting ir nē ietekmē arī tas nav asort () funkcija.

Tādējādi, ja IGNORECASE nav vienāds ar nulli / aB / atbilst visām stīgām "ab", "aB","Ab", un "AB". Tāpat kā ar visiem AWK mainīgajiem lielumiem, sākotnējā vērtība IGNORECASE ir nulle, tāpēc visas regulāro izteiksmju un virkņu operācijas parasti ir reģistrjutīgi. Saskaņā ar Unix, ignorējot lietu, tiek izmantots pilns ISO 8859-1 latīņu-1 rakstzīmju kopums.

LINT

Nodrošina dinamisku kontroli --lints AWK programmas ietvaros. Ja taisnība gawk izdrukā melno brīdinājumu. Ja tas ir nepatiess, tas nav. Ja piešķirta virknes vērtība "letāls"vilnas brīdinājumi kļūst par letālu kļūdām, tieši tāpat kā --lint = letāls. Jebkāda cita patiesā vērtība vienkārši izdrukā brīdinājumus.

NF

Pašreizējā ievades ieraksta lauku skaits.

NR

Līdz šim redzamais ieejas ierakstu kopējais skaits.

OFMT

Ciparu izvades formāts, "% .6g", pēc noklusējuma.

OFS

Izvades lauku atdalītājs, pēc noklusējuma atstarpe.

ORS

Izvades ierakstu atdalītājs pēc noklusējuma ir jauna līnija.

PROCINFO

Šī masīva elementi nodrošina piekļuvi informācijai par palaišanas AWK programmu. Dažās sistēmās masīvā var būt elementi, "grupa1" cauri "grupa n ' dažiem n , kas ir to papildu grupu skaits, kurām ir process. Izmantojiet in lai pārbaudītu šos elementus. Ir nodrošināti šādi elementi:

PROCINFO "egid"

vērtības vērtība getegid (2) sistēmas zvans.

PROCINFO "euid"

vērtības vērtība geteuid (2) sistēmas zvans.

PROCINFO "FS"

"FS" ja lauka sadalīšana ar FS ir spēkā, vai "LAUKSAIMNIECĪBA" ja lauka sadalīšana ar FIELDWIDTHS ir spēkā.

PROCINFO "gid"

vērtības vērtība getgid (2) sistēmas zvans.

PROCINFO "pgrpid"

pašreizējā procesa procesa grupas ID.

PROCINFO "pid"

pašreizējā procesa procesa ID.

PROCINFO "ppid"

pašreizējā procesa vecāku procesa ID.

PROCINFO "uid"

vērtības vērtība getuid (2) sistēmas zvans.

RS

Ievades ierakstu atdalītājs pēc noklusējuma ir jauna līnija.

RT

Ieraksta terminators. Gawk komplekti RT uz ievades tekstu, kas atbilst rakstzīmei vai regulārajai izteiksmei, kuru norādījis RS.

RSTART

Pirmā rakstzīme indekss atbilst spēles (); 0 ja nav spēles. (Tas nozīmē, ka rakstzīmju rādītāji sākas vienā.)

RLENGTH

Jostas garums atbilst spēles (); -1 ja nav spēles.

PIETEIKTIES

Paraugs, ko izmanto, lai atsevišķi sadalītu vairākus apzīmējumus masīvu elementos pēc noklusējuma ' 034'.

TEXTDOMAIN

AWK programmas teksta apgabals; izmantots, lai atrastu programmas virkņu lokalizētus tulkojumus.

Masīvi

Masīvi ir apzīmēti ar kvadrātiekavās ( un ) Ja izteiksme ir izteiksmes saraksts ( expr , expr …), tad masīva apakšraksts ir virkne, kas sastāv no katra izteiksmes (virknes) konektācijas, atdalīta ar vērtību PIETEIKTIES mainīgais. Šo iespēju izmanto, lai simulētu daudzkārtēji izmēru masīvus. Piemēram:

i = "A"; j = "B"; k = "C"x i, j, k = "sveiki, pasaule n"

piešķir virkni "sveiki, pasaule n" uz masīva elementu x ko indeksē virkne"A 034B 034C". Visi AWK masīvi ir asociatīvi, t.i., indeksēti ar virknes vērtībām.

Īpašais operators in var izmantot ja vai kamēr paziņojums, lai redzētu, vai masīvam ir indekss, kas sastāv no konkrētas vērtības.

ja (val masīvā) drukāšanas masīvs val

Ja masīvam ir vairāki apakškategorijas, izmantojiet (i, j) masīvā.

The in konstrukciju var izmantot arī par cilpa, lai atkārtotu visus elementus masīvā.

Elementu var izdzēst no masīva, izmantojot dzēst paziņojums, apgalvojums. The dzēst paziņojumu var arī izmantot, lai izdzēstu visu masīva saturu, vienkārši norādot masīva nosaukumu bez apakšindeksa.

Mainīgs rakstīšanas un reklāmguvums

Mainīgie lielumi un lauki var būt (peldošā komata) numuri, vai virknes, vai abi. Kā mainīgā lieluma vērtība tiek interpretēta atkarībā no tā konteksta. Ja to izmanto skaitliskā izteiksmē, tas tiks uzskatīts par skaitli, ja to izmantos kā virkni, tas tiks uzskatīts par virkni.

Lai piespiestu mainīgo kļūt par skaitli, pievienojiet 0; lai piespiestu to uzskatīt par virkni, sajaukt to ar nulles virkni.

Kad virkne jāpārvērš par skaitli, konvertēšana tiek veikta, izmantojot strtod (3). Numurs tiek pārveidots par virkni, izmantojot vērtību CONVFMT kā formāta virkne sprintf (3), ar mainīgā skaitlisko vērtību kā argumentu. Tomēr, lai gan visi AWK skaitļi ir peldošā komata, integrālas vērtības ir vienmēr konvertē kā veseli skaitļi. Tādējādi dots

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

mainīgais b ir virknes vērtība '12' un nē '12.00'.

Gawk veic šādus salīdzinājumus: ja divi mainīgie ir ciparu skaitļi, tos salīdzina skaitliski. Ja viena vērtība ir ciparu un otrai ir virknes vērtība, kas ir `` ciparu virkne '', tad salīdzinājumi tiek veikti arī skaitliski. Pretējā gadījumā skaitliskā vērtība tiek pārveidota par virkni un tiek veikta virknes salīdzināšana. Protams, divas virknes tiek salīdzinātas ar stīgām. Ņemiet vērā, ka POSIX standarts visur lieto jēdzienu "skaitliskā virkne", arī uz virknes konstantēm. Tomēr tas ir acīmredzami nepareizs, un gawk to nedara. (Par laimi tas ir noteikts nākamajā standarta versijā.)

Ņemiet vērā, ka virknes konstantes, piemēram, '57', ir nē ciparu virknes, tās ir virknes konstantes. "Ciparu virknes" ideja attiecas tikai uz laukiem, getline ieeja FAILA NOSAUKUMS, ARGV elementi ENVIRON elementi un veidoti masīvu elementi split () kas ir ciparu virknes. Pamata ideja ir tā lietotāja ievadi , un tādēļ būtu jāizturas tikai no lietotāja ievades, kas izskatās skaitliski.

Neinitializētiem mainīgajiem ir ciparu vērtība 0 un virknes vērtība "" (nulles vai tukša, virkne).

Octaal un heksadecimālās konstantes

Sākot ar versiju 3.1 gawk AWK programmas pirmkodā varat izmantot C-veida astoņkājus un heksadecimālās konstantes. Piemēram, astotajā vērtībā 011 ir vienāds ar decimālo 9, un heksadecimālā vērtība 0x11 ir vienāds ar decimālo 17.

Stīgu konstantes

AWK stīgu konstantes ir rakstzīmju secības, kas ietvertas starp divkāršiem pēdiņām (') Caur stīgu, daži aizbēgt sekvences tiek atzītas, tāpat kā C. Tie ir:

\

Burtiska slīpsvītra.

a

`` Brīdinājuma '' raksturs; parasti ASCII BEL raksturs.

b

backspace.

f

form-feed.

n

jauna līnija

r

rakstatgriezes.

t

horizontālā cilne.

v

vertikālā cilne.

x hex cipari

Simbolu, ko raksturo virkne sešpadsmitdaļās ciparu pēc x. Tāpat kā ANSIC, visi sekojošie heksadecimālie cipari tiek uzskatīti par izejas secības daļu. (Šī funkcija mums pastāstītu mums kaut ko par valodas dizainu komitejā.) Piemēram, " x1B" ir ASCIIESC (aizbēgt) raksturs.

ddd

Raksturs, ko attēlo astoņu ciparu 1-, 2- vai 3 ciparu secība. Piemēram, ' 033' ir ASCII ESC (aizbēgt) raksturs.

c

Burtiskais raksturs c .

Escape secības var izmantot arī pastāvīgās regulārās izteiksmēs (piemēram,/ t f n r v / atbilst atstarpes rakstzīmēm).

Saderības režīmā rakstzīmes, ko attēlo astotās un sešpadsmitdaļās aizvēršanas sekvences, tiek traktēti burtiski, kad tos izmanto regulāro izteiksmju konstantos. Tādējādi / a 52b / ir vienāds ar/ a * b /.

Modeļi un darbības

AWK ir uz līniju orientēta valoda. Vispirms ir modelis, un tad darbība. Paziņojumi par rīcību ir pievienoti { un }. Vai nu modelis var būt pazudis, vai arī rīcībai trūkst, bet, protams, ne abi. Ja modelis trūkst, darbība tiek izpildīta katrai ievades ierakstiem. Trūkstošā darbība ir līdzvērtīga

{drukāt}

kas izdrukā visu ierakstu.

Komentāri sākas ar `` # '' rakstzīmi un turpina līdz līnijas beigām. Atsevišķus paziņojumus var izmantot tukšās līnijas. Parasti paziņojums beidzas ar jaunu līniju, tomēr tas neattiecas uz līnijām, kas beidzas ar ``, '', {, ?, :, &&, vai ||. Rindas, kas beidzas dari vai cits arī viņu paziņojumi automātiski tiek turpināti nākamajā rindā. Citos gadījumos līniju var turpināt, beidzot to ar ", tādā gadījumā jaunā līnija tiks ignorēta.

Vairākus paziņojumus var ievietot vienā rindā, atdalot tos ar ``; ''. Tas attiecas gan uz apgalvojumiem modeļa darbības pāra darbības daļā (parastais gadījums), gan uz paša modeļa darbības paziņojumiem.

Modeļi

AWK modeļi var būt viens no šiem:

BEGIN END / regulāra izteiksme / Relāciju izpausme modelis && modelis modelis || modelis modelis ? modelis : modelis ( modelis ) ! modelis modelis1 , modelis2

BEGIN un END ir divi īpaša veida modeļi, kas nav pārbaudīti pret ievadi. Visu darbību daļas BEGIN modeļi ir apvienoti tā, it kā visi apgalvojumi būtu uzrakstīti vienā BEGIN bloķēt. Tos izpilda pirms kāda no ievades tiek lasīta. Tāpat arī visi END bloki ir apvienoti un tiek izpildīti, kad visas ievades ir izsmeltas (vai kad Izeja paziņojums tiek izpildīts). BEGIN un END modeļus nevar kombinēt ar citiem modeļa izteiksmes modeļiem. BEGIN un END modeļiem nevar būt pazudušas darbības daļas.

Par / regulāra izteiksme / modeļus, saistīto paziņojumu izpilda katram ievades ierakstam, kas atbilst regulārajai izteiksmei. Regulārās izteiksmes ir tādas pašas kā egrep (1), un tie ir apkopoti turpmāk.

A Relāciju izpausme var izmantot kādu no operatoriem, kas definēti tālāk sadaļā par darbībām. Tie parasti pārbauda, ​​vai konkrētās lauki atbilst noteiktām regulārajām izteiksmēm.

The &&, ||, un ! operatori ir loģiski, loģiski VR un loģiski NOT, attiecīgi, kā C. Viņi veic īsslēguma novērtēšanu, tāpat kā C, un tiek izmantoti, lai apvienotu vairāk primitīvu modeļu izteicienus. Tāpat kā lielākajā daļā valodu, iekavās var izmantot vērtēšanas kārtības maiņu.

The ?: operators ir tāds pats operators C. Ja pirmais modelis ir taisnība, tad pārbaudei izmantotais modelis ir otrais modelis, pretējā gadījumā tas ir trešais. Novērtēts tikai viens no otrā un trešā modeļiem.

The modelis1 , modelis2 izteiksmes forma tiek saukta par diapazona modelis . Tas atbilst visiem ievades ierakstiem, sākot ar ierakstu, kas atbilst modelis1 , un turpinās līdz ieraksts, kas atbilst modelis2 , ieskaitot. Tas nav savienojams ar cita veida izteiksmi.

Regulāras izteiksmes

Regulārās izteiksmes ir paplašinātā veida egrep . Tie sastāv no šādām rakstzīmēm:

c

atbilst nemetaksimeklim c .

c

atbilst burtiskajam burtiem c .

.

atbilst jebkuram rakstzīmei tostarp jauna līnija

^

atbilst virknes sākumam.

$

atbilst virknes beigām.

abc …

rakstzīmju saraksts atbilst nevienai no rakstzīmēm abc … .

^ abc …

noraidīts rakstzīmju saraksts, atbilst jebkuram rakstzīmei, izņemot abc … .

r1 | r2

maiņa: atbilst vai nu r1 vai r2 .

r1r2

saķere: sērkociņi r1 , un tad r2 .

r +

atbilst vienai vai vairākām r s.

r *

atbilst nullei vai vairāk r s.

r ?

atbilst nullei vai vienai r s.

( r )

grupēšana: sērkociņi r .

r { n }

r { n ,}

r { n , m } Viens vai divi skaitļi lentē apzīmē an intervāla izteiksme . Ja braces ir viens skaitlis, iepriekšējā regulāro izteiksmi r tiek atkārtota n reizes. Ja divi skaitļi ir atdalīti ar komatu, r tiek atkārtota n uz m reizes. Ja ir viens numurs, kam seko komats, tad r tiek atkārtots vismaz n reizes.

Intervāla izteiksmes ir pieejamas tikai tad, ja nu --posiks vai - intervāls ir norādīts komandrindā.

y

atbilst tukšajai virknei vārda sākumā vai beigās.

B

atbilst vārdam tukšajai virknei.

<

atbilst tukšajai virknei vārda sākumā.

>

atbilst vārda beigās tukšai virknei.

w

atbilst jebkuram vārdu sastāvošajam rakstzīmei (burts, cipars vai pasvītrojums).

W

atbilst jebkuram rakstzīmei, kas nav vārdu sastāvs.

`

sakrīt ar tukšu virkni bufera (virknes) sākumā.

'

atbilst bufera beigās tukšajai virknei.

Pārmaiņas secības, kas ir spēkā virknes konstantos (sk. Tālāk), ir derīgas arī regulārajās izteiksmēs.

Rakstzīmju klases ir jauna iezīme POSIX standarta ietvaros. Rakstzīmju klase ir īpašs apzīmējums rakstzīmju sarakstam, kuriem ir īpašs atribūts, bet faktiskās rakstzīmes var atšķirties atkarībā no valsts un / vai no rakstzīmju kopas uz rakstzīmju kopu. Piemēram, ASV un Francijā domājams, ka vārds ir alfabēta raksturs.

Rakstzīmju klase ir derīga tikai regulārā izteiksmē iekšā rakstzīmju saraksta iekavās. Rakstzīmju klases sastāv no :, atslēgvārds, kas apzīmē klasi, un :. Zīmju kategorijas, kas definētas POSIX standarta ietvaros, ir šādas:

: alnum:

Burtciparu rakstzīmes.

: alfa:

Alfabētiskas rakstzīmes.

: tukšs:

Atstarpes vai cilnes rakstzīmes.

: cntrl:

Vadības rakstzīmes.

: cipars:

Ciparu rakstzīmes.

: diagramma:

Rakstzīmes, kas ir gan izdrukājamas, gan redzamas. (Tukšums ir izdrukājams, bet nav redzams, kamēr a ir gan.)

: zemāka:

Apakšējā burtu burtu zīmes.

: izdrukāt:

Printable rakstzīmes (rakstzīmes, kas nav kontroles rakstzīmes).

: punct:

Burtu zīmes (rakstzīmes, kas nav burts, cipari, vadības rakstzīmes vai atstarpes rakstzīmes).

: vieta:

Kosmosa rakstzīmes (piemēram, vieta, cilne un veidlapa, lai norādītu dažus).

: augšējā:

Augšējā burtu burtu zīmes.

: xdigit:

Rakstzīmes, kas ir sešpadsmitas cipari.

Piemēram, pirms POSIX standarta, lai atbilstu burtciparu rakstzīmēm, jums būtu vajadzējis rakstīt / A-Za-z0-9 /. Ja tavam rakstzīmju komplektam tajā bija citas burtu zīmes, tas neatbilst tiem, un, ja jūsu rakstzīmju kopums atšķiras no ASCII, tas var pat neatbilst ASCII burtu un ciparu burtiem. Ar POSIX rakstzīmju klasēm jūs varat rakstīt/ : alnum: /, un tas atbilst rakstzīmju kopas alfabētiskajiem un ciparu simboliem.

Rakstzīmju sarakstos var parādīties divas papildu īpašas sekvences. Tie attiecas uz ne-ASCII rakstzīmju kopām, kurām var būt atsevišķi simboli (saukti salikšanas elementi ), kas ir attēlotas ar vairāk nekā vienu rakstzīmi, kā arī vairākas rakstzīmes, kas ir līdzvērtīgas salīdzinot vai šķirošana. (Piemēram, franču valodā plain `` e '' un kaprīzs-accented e` ir ekvivalenti).

Simbolu sakārtošana

Sastāvošais simbols ir multi-rakstzīmju sakritības elements, kas iekļauts . un .. Piemēram, ja ch ir salīdzināšanas elements, tad .ch. ir regulāra izteiksme, kas atbilst šim elementam, kamēr ch ir regulāra izteiksme, kas atbilst vai nu c vai h.

Līdzvērtības klases

Ekvivalences klase ir lokālajam nosaukumam atbilstošs simbolu saraksts. Nosaukums ir pievienots = un =. Piemēram, nosaukums e var tikt izmantots, lai pārstāvētu visu `` e, '' `` e ',' 'un `` e`.' 'Šajā gadījumā = e = ir regulāra izteiksme, kas atbilst jebkurai no e, e ', vai e `.

Šīs funkcijas ir ļoti vērtīgas vietnēs, kurās nav angļu valodas. Bibliotēka to funkcionē gawk regulāro izteiksmju atbilstības izmantošana pašlaik atpazīst POSIX rakstzīmju kategorijas; viņi neatzīst salīdzināšanas simbolus vai līdzvērtības klases.

The y, B, <, >, w, W, `, un ' operatori ir specifiski gawk ; tie ir paplašinājumi, kas balstīti uz iekārtām GNU regulārās izteiksmes bibliotēkās.

Dažādas komandrindas opcijas kontrolē, kā gawk interpretē rakstzīmes regulāros izteicienos.

Nav iespēju

Noklusējuma gadījumā gawk nodrošināt visas POSIX regulārās izteiksmes iespējas un iepriekš aprakstītos GOOG regulāro izteiksmju operatorus. Tomēr intervāla izteiksmes netiek atbalstītas.

--posiks

Tikai POSIX regulāras izteiksmes tiek atbalstītas, GNU operatori nav īpašie. (Piem., w atbilst burtiskajam w) Intervāla izteiksmes ir atļautas.

- tradicionāls

Tradicionālais Unix awk regulārie izteicieni ir saskaņoti. GNU operētājsistēmas nav īpašas, intervāla izteiksmes nav pieejamas, un nav arī POSIX rakstzīmju kategorijas (: alnum: un tā tālāk). Simboli, kurus apraksta oktālajā un heksadecimālajā evakuācijas secībā, tiek apstrādāti burtiski, pat ja tie pārstāv regulāro izteiksmju metasarmetus.

- intervāls

Atļaut intervālu izteiksmes regulārajās izteiksmēs, pat ja - tradicionāls ir sniegta.

Darbības

Rīcības paziņojumi ir pievienoti bikštumos, { un }. Rīcības paziņojumi sastāv no parastajiem uzdevumiem, nosacītajiem un looping paziņojumiem, kas atrodami vairumā valodu. Operatori, vadības ziņojumi un ievades / izvades paziņojumi ir pieejami rakstiski pēc tiem, kas norādīti C.

Operatori

AWK operatori, kas sakrīt ar prioritāti, ir

()

Grupēšana

$

Lauka atsauce.

++ --

Pieaugums un samazinājums, gan prefikss, gan pēcfikss.

^

Eksponencija (** var izmantot arī, un **= piešķīruma operatoram).

+ - !

Unarī plus, mierīgs mīnus un loģisks noliegums.

* / %

Reizināšana, sadalīšana un modulis.

+ -

Papildinājums un atņemšana.

telpa

Stīgu sakopošana.

< >

<= >=

!= == Regulāri attiecību vadītāji.

~ !~

Regulāra izteiksmes atbilstība, negatīva atbilstība. PIEZĪME: Neizmantojiet pastāvīgu regulāro izteiksmi (/ foo /) a. kreisajā pusē ~ vai !~. Izmantojiet tikai vienu labajā pusē. Izteiciens / foo / ~ exp ir tāda pati nozīme kā (($ 0 ~ / foo /) ~ exp ). Tas parasti ir nē kas bija paredzēts.

in

Array membership.

&&

Loģiski un.

||

Loģiski OR.

?:

C nosacījuma izteiksme. Tam ir sava forma expr1 ? expr2 : expr3 . Ja expr1 ir taisnība, izteiksmes vērtība ir expr2 , citādi tas ir expr3 . Tikai viens no expr2 un expr3 tiek novērtēts.

= += -=

*= /= %= ^= Uzdevums. Abi absolūti uzdevumi ( var = vērtība ) un operatora piešķiršana (pārējās veidlapas).

Kontroles paziņojumi

Kontroles paziņojumi ir šādi:

ja ( nosacījums ) paziņojums, apgalvojums cits paziņojums, apgalvojums kamēr ( nosacījums ) paziņojums, apgalvojums dari paziņojums, apgalvojums kamēr ( nosacījums ) par ( expr1 ; expr2 ; expr3 ) paziņojums, apgalvojums par ( var in masīvs ) paziņojums, apgalvojums pārtraukums Turpināt dzēst masīvs indekss dzēst masīvs Izeja izteiksme { paziņojumi }

I / O paziņojumi

Ievades / izvades paziņojumi ir šādi:

tuvu ( fails , )

Aizveriet failu, cauruli vai kopīgi apstrādājiet. Neobligāts kā jāizmanto tikai tad, kad tiek noslēgts divu virzienu cauruļvadu viens gala kopprocess. Tam jābūt arī virknes vērtībai "uz" vai "no".

getline

Komplekts $0 no nākamā ievades ieraksta; iestatīt NF, NR, FNR.

getline < fails

Komplekts $0 no nākamā ieraksta fails ; iestatīt NF.

getline var

Komplekts var no nākamā ievades ieraksta; iestatīt NR, FNR.

getline var < fails

Komplekts var no nākamā ieraksta fails .

komandu | getline var

Palaist komandu cauruļvadu izvadi vai nu uz $0 vai var , kā minēts iepriekš.

komandu | & getline var

Palaist komandu kā kopprocesa cauruļvadu izvadi vai nu $0 vai var , kā minēts iepriekš. Kopprocesi ir a gawk pagarinājums

Nākamais

Pārtraukt pašreizējā ievades ieraksta apstrādi. Nākamais ievades ieraksts tiek lasīts un apstrāde sākas ar pirmo modeli AWK programmā. Ja ievades datu beigas ir sasniegtas, tad END bloks (-i), ja tāds ir, tiek izpildīti.

nextfile

Apturēt pašreizējā ievades faila apstrādi. Nākamais ievades ieraksts lasāms nākamajā ievades failā. FAILA NOSAUKUMS un ARGIND tiek atjaunināti FNR tiek atiestatīts uz 1 un apstrāde sākas ar pirmo modeli AWK programmā. Ja ievades datu beigas ir sasniegtas, tad END bloks (-i), ja tāds ir, tiek izpildīti.

izdrukāt

Drukā pašreizējo ierakstu. Izejas ieraksts tiek pārtraukts ar vērtības vērtību ORS mainīgais.

izdrukāt expr-saraksts

Izdrukas izteiksmes. Katrs izteiciens tiek atdalīts ar vērtību OFS mainīgais. Izejas ieraksts tiek pārtraukts ar vērtības vērtību ORS mainīgais.

izdrukāt expr-saraksts > fails

Izdrukas izteiksmes fails . Katrs izteiciens tiek atdalīts ar vērtību OFS mainīgais. Izejas ieraksts tiek pārtraukts ar vērtības vērtību ORS mainīgais.

printf fmt, expr-saraksts

Formatējiet un izdrukājiet.

printf fmt, expr-saraksts > fails

Formatējiet un izdrukājiet fails .

sistēma ( cmd-line )

Izpildīt komandu cmd-line , un atgriezt iziešanas statusu. (Tas var nebūt pieejams ārpus POSIX sistēmām.)

fflush ( fails )

Ielieciet visus buferus, kas saistīti ar atvērto izejas failu vai cauruli fails . Ja fails trūkst, tad standarta izlaide tiek izskalota. Ja fails ir nulles virkne, tad visi atvērtā izejas faili un caurules iztukšo buferus.

Papildu produkcijas novirzīšana ir atļauta izdrukāt un printf.

izdrukājiet … >> fails

pievieno produkciju uz fails .

drukāt … | komandu

raksta uz caurules.

izdrukāt … | & komandu

nosūta datus kopprocesam.

The getline komanda atgriež 0 faila beigās un -1 kļūda. Pēc kļūdas ERRNO satur virkni, kurā aprakstīta problēma.

PIEZĪME: Ja izmantojat cauruli vai kopīgi apstrādājat ar getlinevai no izdrukāt vai printf pie cilpas, tu jābūt izmantot aizvērt () lai izveidotu jaunus komandas gadījumus. AWK automātiski neaizver caurules vai kopprocesus, kad tās atgriež EOF.

Deklarācija printf

AWK versijas printf paziņojums un sprintf () funkcija (skatiet tālāk) pieņem šādus reklāmguvumu specifikāciju formātus:

% c

ASCII raksturs. Ja arguments tiek izmantots % c ir skaitlisks, to uzskata par rakstzīmi un izdrukā. Pretējā gadījumā tiek pieņemts, ka arguments ir virkne, un tiek izdrukāts vienīgais šīs virknes pirmais raksturs.

% d, % i

Ciparskaitlis (vesels skaitlis).

% e,% E

Veidlapas peldošā komata numurs - d.dddddde + - dd. The % E formāta lietojumi E tā vietā e.

% f

Veidlapas peldošā komata numurs - ddd.dddddd.

% g,% G

Izmantojiet % e vai % f atkarībā no tā, kas ir īsāks, ar nenozīmīgu nulles nomākumu. The% G formāta lietojumi % E tā vietā % e.

% o

Neparakstīts astotais numurs (arī vesels skaitlis).

% u Neparakstīts decimālskaitlis (vēlreiz, vesels skaitlis).

% s

Rakstzīmju virkne.

% x,% X

Neparakstīts heksadecimālais skaitlis (vesels skaitlis). The % X formāta lietojumi ABCDEF tā vietāabcdef.

%%

Viens % raksturs; neviens arguments nav pārveidots.

Pēc izvēles papildu parametri var būt starp % un kontroles burts:

skaits $

Izmantojiet skaits 'th arguments šajā formatēšanas brīdī. To sauc par pozīcijas specifikācija un to galvenokārt paredzēts izmantot translācijas formāta virkņu versijās, nevis AWK programmas oriģinālajā tekstā. Tas ir gawk pagarinājums

-

Izteiksmei jāatstāj pamatojums savā jomā.

telpa

Ciparu reklāmguvumiem prefiksējiet pozitīvas vērtības ar atstarpi un negatīvas vērtības ar mīnusa zīmi.

+

Plusa zīme, ko lieto pirms platuma modifikatora (skatiet zemāk), saka vienmēr pievienot signālu ciparu reklāmguvumiem, pat ja formatējamie dati ir pozitīvi. The + ignorē telpas modifikatoru.

#

Dažām kontroles burtiem izmantojiet `` alternatīvo formu ''. Par % o, sniedziet galveno nulli. Par % x, un % X, sniedz vadošo 0x vai 0X par nulles rezultātu. Par % e, % E, un % f, rezultāts vienmēr satur decimālzīmi. Par % g, un % Gno rezultāta netiek noņemtas pēdējās nulles.

0

Vadošais 0 (nulle) darbojas kā karodziņš, kas norāda, ka izejas laukam jābūt nulles, nevis atstarpēm. Tas attiecas arī uz ciparu izvades formātiem. Šis karogs ir tikai efekts, ja lauka platums ir plašāks nekā drukājamā vērtība.

platums

Laukumam ir jāpapildina šis platums. Laukums parasti tiek aizpildīts ar atstarpēm. Ja 0karogs ir izmantots, tas ir polsterēts ar nulli.

. prec

Numurs, kas norāda precizitāti, ko izmantot drukāšanas laikā. Priekš % e, % E, un % fformāti, tas norāda ciparu skaitu, kuru vēlaties izdrukāt pa labi no komata. Priekš % g, un % G formātos, tas nosaka maksimālo nozīmīgo ciparu skaitu. Priekš % d, % o, % i, % u, % x, un % X formāti, tā norāda minimālo drukāto ciparu skaitu. Par % s, tas nosaka maksimālo rakstzīmju skaitu no virknes, kas būtu jāizdrukā.

Dinamiska platums un prec ANSI C spējas printf () rutīnas tiek atbalstītas. A * vai nu platums vai prec specifikācijas izraugās to vērtības no argumentu saraksta uz printf vai sprintf (). Lai izmantotu pozīcijas specifiku ar dinamisku platumu vai precizitāti, piegādājiet skaits $ pēc tam, kad * formāta virknē. Piemēram, "% 3 $ * 2 $. * 1 $ s".

Īpašie failu nosaukumi

Veicot I / O novirzi no jebkura izdrukāt vai printf failā vai izmantojot getline no faila gawk atzīst noteiktas īpašas failu nosaukumus iekšēji. Šie faila nosaukumi ļauj piekļūt atvērtām failu deskriptoriem, kas ir mantoti no gawk 's vecāku process (parasti čaumalu). Šos failu nosaukumus var arī izmantot komandrindā, lai nosauktu datu failus. Failu nosaukumi ir:

/ dev / stdin

Standarta ievade.

/ dev / stdout

Standarta izlaide.

/ dev / stderr

Izvades standarta kļūda.

/ dev / fd / n

Fails, kas saistīts ar atvērtā failu deskriptoru n .

Tie ir īpaši noderīgi kļūdu ziņojumos. Piemēram:

izdrukājiet "Tu to pamanīji!" > "/ dev / stderr"

kamēr jūs citādi būtu jāizmanto

izdrukājiet "Tu to pamanīji!" | "kaķis 1" un "2"

Ar šādiem nosaukumiem var izmantot šādus īpašus failu nosaukumus |& sadarbojas ar TCP / IP tīkla savienojumu izveidošanas operatoru.

/ inet / tcp / lport / rhost / rport

TCP / IP savienojuma vietnes porta fails lport uz attālināto datoru rhost attālajā ostā rport . Izmantojiet ostu 0 lai sistēma izvēlētos ostu.

/ inet / udp / lport / rhost / rport

Līdzīgi, bet izmantojiet UDP / IP, nevis TCP / IP.

/ inet / neapstrādāts / lport / rhost / rport

Rezervēts izmantošanai nākotnē.

Citas īpašas failu nosaukumi nodrošina piekļuvi informācijai par skriešanu gawk process. Šie faila nosaukumi tagad ir novecojuši. Izmantojiet PROCINFO masīvu, lai iegūtu informāciju, ko tie sniedz. Failu nosaukumi ir:

/ dev / pid

Lasot šo failu, tiek parādīts pašreizējā procesa procesa ID skaitlis decimāldaļā, kas pārtraukts ar jaunu rindiņu.

/ dev / ppid

Lasot šo failu, tiek parādīts pašreizējā procesa vecāku procesa ID, kas decimāldaļā ir pārtraukts ar jaunu līniju.

/ dev / pgrpid

Šī faila lasīšana atgriež pašreizējā procesa procesa grupas ID decimāldaļā, kas pārtraukta ar jaunu līniju.

/ dev / lietotājs

Lasot šo failu, tiek parādīts viens ieraksts, kas pārtraukts ar jaunu līniju. Lauki ir atdalīti ar atstarpēm. $1 ir vērtība getuid (2) sistēmas zvans, $2 ir vērtība geteuid (2) sistēmas zvans, $3 ir vērtība getgid (2) sistēmas izsaukums un $4 ir vērtība getegid (2) sistēmas zvans. Ja ir papildu lauki, tie ir grupu ID, kurus atgriež getgroups (2). Vairākās grupās var neatbalstīt visas sistēmas.

Ciparu funkcijas

AWK ir šādas iebūvētas aritmētiskās funkcijas:

atan2 ( y , x )

Atgriež arctangent no y / x radiānos.

cos ( expr )

Atgriež kosinuss no expr , kas atrodas radiānos.

exp ( expr )

Eksponenciālā funkcija.

int ( expr )

Noapaļo līdz veselam skaitlim.

log ( expr )

Naturālā logaritma funkcija.

rand ()

Atgriež nejaušo skaitli no 0 līdz 1.

grēks ( expr )

Atgriež sine no expr , kas atrodas radiānos.

sqrt ( expr )

Kvadrātsaknes funkcija.

srand ( expr )

Izmanto expr kā jauna sēkla nejaušo skaitļu ģeneratoram. Ja nē expr tiek izmantots dienas laiks. Atgriežamā vērtība ir iepriekšējā sēkla nejaušo skaitļu ģeneratoram.

String funkcijas

Gawk ir šādas iebūvētas virknes funkcijas:

asort ( s , d )

Atgriež elementu skaitu avota masīvā s . Satura saturs s tiek sakārtoti, izmantojot gawk parastās vērtības vērtības salīdzināšanai un šķiroto vērtību indeksi s tiek aizstāti ar secīgiem veseliem skaitļiem, sākot ar 1. Ja ir izvēles galapunkta masīvs d ir norādīts, pēc tam s vispirms tiek dublēts d , un tad d ir sakārtots, atstājot avota masīva indeksus s nemainīgs.

gensub ( r , s , h , t )

Meklējiet mērķa virkni t regulārās izteiksmes spēlēm r . Ja h ir virkne, kas sākas ar g vai G, tad nomainiet visas spēles no r ar s . Pretējā gadījumā h ir skaitlis, kas norāda, kas atbilst r aizstāt. Ja t netiek piegādāts $0 vietā tiek izmantots. Rezerves tekstā s , secība n , kur n ir cipars no 1 līdz 9, to var izmantot, lai norādītu tikai to tekstu, kas ir atbilstošs n 'th ieslēgta apakšizveidošana. Secība 0 apzīmē visu atbilstošo tekstu, tāpat kā rakstzīmi &. Atšķirībā no sub () un gsub (), modificētā virkne tiek atgriezta kā funkcijas rezultāts, un sākotnējā mērķa virkne ir nē mainījies

gsub ( r , s , t )

Par katru apakšvirkni saskaņojot regulāro izteiksmi r virknē t , aizstāj virkni s , un atgriež aizvietojumu skaitu. Ja t netiek piegādāts, izmantojiet $0. An & aizstāšanas tekstā tiek aizstāts ar faktiski saskaņoto tekstu. Izmantojiet & lai iegūtu burtisku vārdu&. (Tas ir jāievada kā '\&'; skat GAWK: efektīva AWK programmēšana lai pilnīgāk apspriestu noteikumus par & s un backslashes aizstāšanas tekstā sub (), gsub (), un gensub ().)

indekss ( s , t )

Atgriež virknes indeksu t virknē s , vai 0 ja t nav klāt. (Tas nozīmē, ka rakstzīmju rādītāji sākas vienā.)

garums ( s )

Atgriež virknes garumu s vai garums $0 ja s netiek piegādāts.

spēles ( s , r , a )