Skip to main content

Gawk - Linux Command - Unix Command

How to Setup Multinode Hadoop 2 on CentOS/RHEL Using VirtualBox (Juni- 2026)

How to Setup Multinode Hadoop 2 on CentOS/RHEL Using VirtualBox (Juni- 2026)
Anonim

Naam

gawk - patroon scannen en verwerken van taal

Korte inhoud

gapen POSIX- of GNU-stijlopties -f programmabestand -- het dossier …gapen POSIX- of GNU-stijlopties -- programma-text het dossier …

pgawk POSIX- of GNU-stijlopties -f programmabestand -- het dossier …pgawk POSIX- of GNU-stijlopties -- programma-text het dossier …

Omschrijving

Gawk is de GNU Project implementatie van de AWK programmeertaal. Het voldoet aan de definitie van de taal in de POSIX 1003.2 Command Language and Utilities Standard. Deze versie is weer gebaseerd op de beschrijving in De AWK programmeertaal , door Aho, Kernighan en Weinberger, met de extra functies die te vinden zijn in de System V Release 4-versie van UNIX awk . Gawk biedt ook recentere Bell Laboratories awk uitbreidingen en een aantal GNU-specifieke uitbreidingen.

Pgawk is de profileringsversie van gapen . Het is op alle manieren identiek aan gapen , behalve dat programma's langzamer worden uitgevoerd en het automatisch een uitvoerprofiel in het bestand produceert awkprof.out wanneer klaar. Zie de --profiel optie hieronder.

De opdrachtregel bestaat uit opties om gapen zelf, de AWK-programmeertekst (indien niet meegeleverd via de -f of --het dossier opties) en waarden die beschikbaar moeten worden gesteld in de argc en ARGV vooraf gedefinieerde AWK-variabelen.

Optie indeling

Gawk opties kunnen zowel traditionele POSIX-opties voor een letter zijn als lange opties voor de GNU-stijl. POSIX-opties beginnen met een enkele `` - '', terwijl lange opties beginnen met `` - ''. Lange opties zijn beschikbaar voor zowel GNU-specifieke functies als voor POSIX-gemandateerde functies.

Volgens de POSIX-standaard, gapen -specifieke opties worden geleverd via argumenten voor de -W keuze. Meerdere -W opties kunnen worden geleverd -W optie heeft een overeenkomstige lange optie, zoals hieronder beschreven. Argumenten voor lange opties worden samengevoegd met de optie door een = teken, zonder tussenliggende spaties, of deze kunnen worden opgegeven in het volgende argument in de opdrachtregel. Lange opties kunnen worden afgekort, zolang de afkorting uniek blijft.

opties

Gawk accepteert de volgende opties, alfabetisch weergegeven.

-F fs

--field-separator fs Gebruik fs voor het invoerveld-scheidingsteken (de waarde van de FS voorgedefinieerde variabele).

-v var = val

--toewijzen var = val Wijs de waarde toe val naar de variabele var , voordat de uitvoering van het programma begint. Dergelijke variabele waarden zijn beschikbaar voor de BEGINNEN blok van een AWK-programma.

-f programmabestand

--het dossier programmabestand Lees de AWK-programmabron uit het bestand programmabestand , in plaats van uit het eerste argument van de opdrachtregel. Meerdere -f (of --het dossier) opties kunnen worden gebruikt.

-MF NNN

-Dhr NNN Stel verschillende geheugenlimieten in op de waarde NNN . De f flag stelt het maximale aantal velden in en de r vlag stelt de maximale recordgrootte in. Deze twee vlaggen en de -m optie zijn van de Bell Laboratories onderzoeksversie van UNIX awk . Ze worden genegeerd door gapen , sinds gapen heeft geen vooraf gedefinieerde limieten.

-W compat

-W traditioneel

--compat

--traditional Ren binnen verenigbaarheid modus. In compatibiliteitsmodus, gapen gedraagt ​​zich identiek aan UNIX awk ; geen van de GNU-specifieke extensies worden herkend. Het gebruik van --traditional heeft de voorkeur boven de andere vormen van deze optie. Zien GNU-UITBREIDINGEN, hieronder, voor meer informatie.

-W copyleft

-W copyright

--copyleft

--auteursrechten Druk de korte versie van het GNU-copyrightinformatiebericht af op de standaarduitvoer en sluit het met succes af.

-W dump-variabelen= het dossier

--dump-variabelen= het dossier Druk een gesorteerde lijst met globale variabelen, hun typen en definitieve waarden af het dossier . Als Nee het dossier is voorzien, gapen gebruikt een bestand met de naam awkvars.out in de huidige map.

Het hebben van een lijst met alle globale variabelen is een goede manier om typografische fouten te zoeken in uw programma's. Je zou deze optie ook gebruiken als je een groot programma hebt met veel functies, en je wilt er zeker van zijn dat je functies niet onbedoeld globale variabelen gebruiken die je als lokaal had bedoeld. (Dit is een bijzonder gemakkelijke fout om te maken met eenvoudige variabelenamen zoals ik, j, enzovoorts.)

-W hulp

-W gebruik

--helpen

--gebruik Druk een relatief korte samenvatting af van de beschikbare opties op de standaarduitvoer. (Per de GNU-coderingsnormen , deze opties veroorzaken een onmiddellijke, succesvolle exit.)

-W lint= fatale

--lint= fatale Geef waarschuwingen over constructen die twijfelachtig of niet-overdraagbaar zijn naar andereAWK-implementaties. Met een optioneel argument van dodelijk, lintwaarschuwingen worden fatale fouten. Dit kan drastisch zijn, maar het gebruik ervan zal zeker de ontwikkeling van schonere AWK-programma's bevorderen.

- Pluis oud

--lint-old Geef waarschuwingen over constructies die niet draagbaar zijn voor de originele versie van Unix awk .

-W gen-po

--gen-po Scan en ontleed het AWK-programma en genereer een GNU .po formaat bestand op standaarduitvoer met ingangen voor alle lokaliseerbare reeksen in het programma. Het programma zelf wordt niet uitgevoerd. Zie de GNU gettext distributie voor meer informatie over .po bestanden.

-W niet-decimale gegevens

--Non-decimaal-data Herken octale en hexadecimale waarden in invoergegevens. Gebruik deze optie met grote voorzichtigheid!

- W posix

--posix Dit gaat aan verenigbaarheid modus, met de volgende aanvullende beperkingen:

*

X escape sequences worden niet herkend.

*

Alleen de spatie en het tabblad fungeren als veldscheidingstekens wanneer FS is ingesteld op een enkele spatie, newline niet.

*

Je kunt de volgende regels niet meer volgen ? en :.

*

Het synoniem func voor het sleutelwoord functie is niet herkend.

*

De exploitanten ** en **= kan niet worden gebruikt in plaats van ^ en ^=.

*

De fflush () functie is niet beschikbaar.

-W profiel= prof_file

--profiel= prof_file Stuur profileringsgegevens naar prof_file . De standaard is awkprof.out. Wanneer uitgevoerd met gapen , het profiel is slechts een `` pretty printed '' versie van het programma. Wanneer uitgevoerd met pgawk , het profiel bevat uitvoeringstellingen van elke instructie in het programma in de linkermarge en functieaanroeptellingen voor elke door de gebruiker gedefinieerde functie.

-W opnieuw interval

--re-interval Schakel het gebruik van in interval uitdrukkingen bij het matchen van reguliere expressies (zie Normale uitdrukkingen, hieronder). Interval-expressies waren niet traditioneel beschikbaar in de AWK-taal. De POSIX-standaard heeft ze toegevoegd om te maken awk en egrep consistent met elkaar. Het gebruik ervan zal echter waarschijnlijk oude AWK-programma's doorbreken, dus gapen geeft ze alleen als ze met deze optie worden gevraagd, of wanneer --posix is gespecificeerd.

-W bron programma-text

--bron programma-text Gebruik programma-text als broncode van het AWK-programma. Met deze optie kunt u bibliotheekfuncties gemakkelijk gebruiken (gebruikt via de -f en --het dossier opties) met broncode ingevoerd op de opdrachtregel. Het is vooral bedoeld voor middelgrote tot grote AWK-programma's die worden gebruikt in shellscripts.

-W versie

--versie Versiegegevens afdrukken voor deze specifieke kopie van gapen op de standaarduitvoer. Dit is vooral handig om te weten of het huidige exemplaar van gapen op uw systeem is up-to-date met betrekking tot wat de Free Software Foundation distribueert. Dit is ook handig bij het melden van bugs. (Per de GNU-coderingsnormen , deze opties veroorzaken een onmiddellijke, succesvolle exit.)

-- Signaleer het einde van de opties. Dit is handig om verdere argumenten aan het AWK-programma zelf toe te staan ​​om met een `` - '' te beginnen. Dit komt voornamelijk voor de consistentie met de argument-parseerconventie die door de meeste andere POSIX-programma's wordt gebruikt.

In de compatibiliteitsmodus worden alle andere opties gemarkeerd als ongeldig, maar worden ze anders genegeerd. In normale werking, zolang programmeertekst is geleverd, worden onbekende opties doorgegeven aan het AWK-programma in de ARGV array voor verwerking. Dit is vooral handig voor het uitvoeren van AWK-programma's via het `` #! '' Uitvoerbare tolkmechanisme.

UITVOERING VAN HET AWK-PROGRAMMA

Een AWK-programma bestaat uit een reeks patroonactie-instructies en optionele functiedefinities.

patroon { actieverklaringen }functie naam ( parameterlijst ) { statements }

Gawk leest eerst de programmabron uit de programmabestand (s) indien opgegeven, van argumenten tot --bron, of vanaf het eerste niet-optionele argument op de opdrachtregel. De -f en --bron opties kunnen meerdere keren worden gebruikt op de opdrachtregel. Gawk leest de programmatekst alsof alle programmabestand s en opdrachtregelbronteksten waren samengevoegd. Dit is handig voor het bouwen van bibliotheken met AWK-functies, zonder ze in elk nieuw AWK-programma dat ze gebruikt te moeten opnemen. Het biedt ook de mogelijkheid om bibliotheekfuncties te mengen met opdrachtregelprogramma's.

De omgevingsvariabele AWKPATH specificeert een zoekpad om te gebruiken bij het zoeken naar bronbestanden met de naam -f keuze. Als deze variabele niet bestaat, is het standaardpad":. / Usr / local / share / awk". (De werkelijke map kan variëren, afhankelijk van hoe gapen is gebouwd en geïnstalleerd.) Als een bestandsnaam is gegeven aan de -f optie bevat een `` / '' teken, er wordt geen pad gezocht.

Gawk voert AWK-programma's in de volgende volgorde uit. Allereerst alle variabele toewijzingen gespecificeerd via de -v optie wordt uitgevoerd. next, gapen compileert het programma in een interne vorm. Dan, gapen voert de code in de BEGINNEN blok (ken) (indien aanwezig) en ga vervolgens verder met het lezen van elk bestand genoemd in de ARGV matrix. Als er geen bestanden zijn met de naam op de opdrachtregel, gapen leest de standaard invoer.

Als een bestandsnaam op de opdrachtregel de vorm heeft var = val het wordt behandeld als een variabele opdracht. De variabele var krijgt de waarde toegewezen val . (Dit gebeurt na elke BEGINNEN blok (ken) zijn uitgevoerd.) Variabele toewijzing opdrachtregel is het meest bruikbaar voor het dynamisch toewijzen van waarden aan de variabelen die AWK gebruikt om te bepalen hoe invoer wordt opgedeeld in velden en records. Het is ook handig voor het beheren van de status als meerdere passes nodig zijn voor een enkel gegevensbestand.

Als de waarde van een bepaald element van ARGV is leeg (''), gapen springt er overheen.

Voor elk record in de invoer, gapen test om te zien of het overeenkomt met een patroon in het AWK-programma. Voor elk patroon dat overeenkomt met het record, het bijbehorende actie is geëxecuteerd. De patronen worden getest in de volgorde waarin ze in het programma voorkomen.

Eindelijk, nadat alle input is uitgeput, gapen voert de code in de EINDE blok (ken) (indien aanwezig).

Variabelen, records en velden

AWK-variabelen zijn dynamisch; ze ontstaan ​​wanneer ze voor het eerst worden gebruikt. Hun waarden zijn drijvende-kommagetallen of tekenreeksen, of beide, afhankelijk van hoe ze worden gebruikt. AWK heeft ook eendimensionale arrays; matrices met meerdere dimensies kunnen worden gesimuleerd. Verschillende voorgedefinieerde variabelen worden ingesteld als een programma wordt uitgevoerd; deze worden beschreven zoals nodig en hieronder samengevat.

archief

Normaal gesproken worden records gescheiden door nieuwe regeltekens. U kunt bepalen hoe records worden gescheiden door waarden toe te wijzen aan de ingebouwde variabele RS. Als RS is een enkel teken, dat teken scheidt records. Anders, RS is een reguliere expressie. Tekst in de invoer die overeenkomt met deze reguliere expressie, scheidt de record. In de compatibiliteitsmodus wordt echter alleen het eerste teken van de tekenreekswaarde gebruikt voor het scheiden van records. Als RS is ingesteld op de nul-tekenreeks, vervolgens worden records gescheiden door lege regels. Wanneer RS is ingesteld op de nul-tekenreeks, het nieuwe lijnteken fungeert altijd als een veldscheidingsteken, naast welke waarde dan ook FS zou kunnen hebben.

Fields

Aangezien elk invoerrecord wordt gelezen, gapen verdeelt het record in velden , gebruikmakend van de waarde van de FS variabele als het veldscheidingsteken. Als FS is een enkel teken, velden worden gescheiden door dat teken. Als FS is de nulstring, dan wordt elk afzonderlijk teken een afzonderlijk veld. Anders, FS zal naar verwachting een volledige reguliere expressie zijn. In het speciale geval dat FS is een enkele spatie, velden worden gescheiden door spaties en / of tabs en / of nieuwe regels. (Maar zie de discussie van --posix, hieronder). NOTITIE: De waarde van NEGEER ZAAK (zie hieronder) heeft ook invloed op hoe velden worden verdeeld wanneer FS is een reguliere expressie en hoe records gescheiden zijn wanneer RS is een reguliere expressie.

Als het FIELDWIDTHS variabele wordt ingesteld op een door spaties gescheiden lijst met nummers, van elk veld wordt een vaste breedte verwacht, en gapen splitst het record op met behulp van de opgegeven breedten. De waarde van FS wordt genegeerd. Een nieuwe waarde toewijzen aan FS heeft voorrang op het gebruik van FIELDWIDTHS, en herstelt het standaardgedrag.

Elk veld in het invoerrecord kan worden gerefereerd aan zijn positie, $1, $2, enzovoorts. $0 is het hele record. Naar velden hoeft niet te worden verwezen door constanten:

n = 5print $ n

print het vijfde veld in het invoerrecord.

De variabele NF is ingesteld op het totale aantal velden in de invoerrecord.

Verwijzingen naar niet-bestaande velden (d.w.z. velden na $ NF) produceer de nul-reeks. Het toewijzen aan een niet-bestaand veld (bijv. $ (NF + 2) = 5) verhoogt de waarde van NF, maakt alle tussenliggende velden met de nulstring als hun waarde en veroorzaakt de waarde van $0 opnieuw worden berekend, waarbij de velden worden gescheiden door de waarde van OFS. Verwijzingen naar velden met een negatief nummer veroorzaken een fatale fout. decrementing NF zorgt ervoor dat de waarden van velden na de nieuwe waarde verloren gaan en de waarde van $0 opnieuw worden berekend, waarbij de velden worden gescheiden door de waarde van OFS.

Door een waarde aan een bestaand veld toe te wijzen, wordt het hele record opnieuw opgebouwd wanneer $0 wordt verwezen. Evenzo, een waarde toewijzen aan $0 zorgt ervoor dat de record opnieuw wordt gesplitst, waardoor nieuwe waarden voor de velden worden gecreëerd.

Ingebouwde variabelen

Gawk De ingebouwde variabelen zijn:

argc

Het aantal opdrachtregelargumenten (bevat geen opties voor gapen of de programmabron).

ARGIND

De index in ARGV van het huidige bestand dat wordt verwerkt.

ARGV

Matrix van opdrachtregelargumenten. De array is geïndexeerd van 0 tot argc - 1. Het dynamisch veranderen van de inhoud van ARGV kan de bestanden besturen die voor gegevens worden gebruikt.

binmode

Op niet-POSIX-systemen, specificeert het gebruik van `` binaire '' modus voor alle bestands-I / O. Numerieke waarden van 1, 2 of 3 geven aan dat invoerbestanden, uitvoerbestanden of alle bestanden binaire I / O moeten gebruiken. Tekenreekswaarden van "R"of "W" geef op dat invoerbestanden of uitvoerbestanden respectievelijk binaire I / O moeten gebruiken. Tekenreekswaarden van "Rw" of "Wr" specificeer dat alle bestanden binaire I / O moeten gebruiken. Elke andere tekenreekswaarde wordt behandeld als "Rw", maar genereert een waarschuwingsbericht.

CONVFMT

Het conversieformaat voor getallen, "% .6g", standaard.

ENVIRON

Een array met de waarden van de huidige omgeving. De array wordt geïndexeerd door de omgevingsvariabelen, waarbij elk element de waarde van die variabele is (bijv.ENVIRON "HOME" kan zijn / Home / arnold). Het veranderen van deze array heeft geen invloed op de omgeving gezien door programma's die gapen spawnt via omleiding of de systeem()functie.

errno

Als er een systeemfout optreedt, of een omleiding uitvoert voor getline, tijdens het lezen voor getline, of tijdens een dichtbij(), dan errno bevat een tekenreeks die de fout beschrijft. De waarde is onderhevig aan vertaling in niet-Engelse landinstellingen.

FIELDWIDTHS

Een wit-gescheiden lijst met veldbreedten. Wanneer ingesteld, gapen parseert de invoer in velden met een vaste breedte, in plaats van de waarde van de FS variabele als het veldscheidingsteken.

BESTANDSNAAM

De naam van het huidige invoerbestand.Als er geen bestanden zijn opgegeven op de opdrachtregel, is de waarde van BESTANDSNAAM is `` - ''. Echter, BESTANDSNAAM is niet gedefinieerd in de BEGINNEN blokkeren (tenzij ingesteld door getline).

FNR

Het ingevoerde recordnummer in het huidige invoerbestand.

FS

Het invoerveld-scheidingsteken, standaard een spatie. Zien Fields, bovenstaande.

NEGEER ZAAK

Regelt de hoofdlettergevoeligheid van alle reguliere expressie- en stringbewerkingen. Als NEGEER ZAAK heeft een niet-nulwaarde, dan stringvergelijkingen en patroonvergelijking in regels, veldsplitsing met FS, record scheiden met RS, reguliere expressie matching met ~en !~, en de gensub (), gsub (), inhoudsopgave(), wedstrijd(), split (), en sub() ingebouwde functies negeren alles bij het uitvoeren van reguliere expressiebewerkingen. NOTITIE: Array-subscripting is niet getroffen, noch is het een soort() functie.

Dus, als NEGEER ZAAK is niet gelijk aan nul, / AB / komt overeen met alle tekenreeksen "Ab", "AB","Ab", en "AB". Zoals met alle AWK-variabelen, de beginwaarde van NEGEER ZAAK is nul, dus alle reguliere expressie- en stringbewerkingen zijn normaal hoofdlettergevoelig. Onder Unix wordt de volledige ISO 8859-1 Latin-1-tekenset gebruikt bij het negeren van hoofdletters en kleine letters.

LINT

Biedt dynamische controle van de --lint optie vanuit een AWK-programma. Wanneer waar, gapen print lint waarschuwingen. Als het fout is, doet het dat niet. Wanneer de tekenreekswaarde is toegewezen "Fatale", lintwaarschuwingen worden fatale fouten, precies zoals --lint = fatale. Elke andere echte waarde drukt alleen waarschuwingen af.

NF

Het aantal velden in het huidige invoerrecord.

NR

Het totale aantal invoerrecords dat tot nu toe is bekeken.

OFMT

Het uitvoerformaat voor nummers, "% .6g", standaard.

OFS

Het scheidingsteken voor het uitvoerveld, standaard een spatie.

ORS

Het scheidingsteken voor uitvoerrecords, standaard een nieuwe regel.

procinfo

De elementen van deze array bieden toegang tot informatie over het lopende AWK-programma. Op sommige systemen kunnen er elementen in de array zijn, "groep 1" door "groep n ' Voor sommigen n , wat het aantal aanvullende groepen is dat het proces heeft. Gebruik de in operator om te testen voor deze elementen. De volgende elementen zijn gegarandeerd beschikbaar:

Procinfo "egid"

de waarde van de getegid (2) systeemoproep.

Procinfo "euid"

de waarde van de geteuid (2) systeemoproep.

Procinfo "FS"

"FS" als veld splitsen met FS is van kracht, of "FIELDWIDTHS" als veld splitsen met FIELDWIDTHS is van kracht.

Procinfo "gid"

de waarde van de getgid (2) systeemoproep.

Procinfo "pgrpid"

de procesgroep-ID van het huidige proces.

Procinfo "pid"

de proces-id van het huidige proces.

Procinfo "ppid"

de parent-proces-ID van het huidige proces.

Procinfo "uid"

de waarde van de getuid (2) systeemoproep.

RS

Het invoer record scheidingsteken, standaard een nieuwe regel.

RT

De record-terminator. Gawk sets RT naar de invoertekst die overeenkomt met het teken of de reguliere expressie die is opgegeven met RS.

RSTART

De index van het eerste teken dat overeenkomt met wedstrijd(); 0 als er geen overeenkomst is. (Dit houdt in dat tekenindexen bij één beginnen.)

RLENGTH

De lengte van de reeks komt overeen met wedstrijd(); -1 als er geen overeenkomst is.

SUBSEP

Het teken dat standaard wordt gebruikt om meerdere subscripts in array-elementen te scheiden ' 034'.

TEKSTDOMEIN

Het tekstdomein van het AWK-programma; gebruikt om de gelokaliseerde vertalingen voor de tekenreeksen van het programma te vinden.

arrays

Arrays zijn subscript met een uitdrukking tussen vierkante haken ( en ). Als de uitdrukking een uitdrukkingenlijst is ( expr , expr …) dan is het array subscript een string bestaande uit de aaneenschakeling van de (tekenreeks) waarde van elke uitdrukking, gescheiden door de waarde van de SUBSEP variabel. Deze faciliteit wordt gebruikt voor het simuleren van meervoudig gedimensioneerde arrays. Bijvoorbeeld:

i = "A"; j = "B"; k = "C"x i, j, k = "hallo, wereld n"

wijst de string toe "hallo, wereld n" naar het element van de array X welke wordt geïndexeerd door de string"A 034B 034C". Alle arrays in AWK zijn associatief, d.w.z. geïndexeerd door tekenreekswaarden.

De speciale operator in kan worden gebruikt in een als of terwijl om te zien of een array een index heeft die bestaat uit een bepaalde waarde.

if (val in array) printarray val

Als de array meerdere subscripts heeft, gebruik dan (i, j) in array.

De in construct kan ook worden gebruikt in een voor lus om alle elementen van een array te itereren.

Een element kan uit een array worden verwijderd met behulp van de verwijderen uitspraak. De verwijderen statement kan ook worden gebruikt om de volledige inhoud van een array te verwijderen door de arraynaam zonder een subscript op te geven.

Variabele typen en conversie

Variabelen en velden kunnen (zwevende komma) getallen of strings of beide zijn. Hoe de waarde van een variabele wordt geïnterpreteerd, hangt af van de context. Als het in een numerieke uitdrukking wordt gebruikt, wordt het als een getal behandeld. Als het als een tekenreeks wordt gebruikt, wordt het als een tekenreeks behandeld.

Als u wilt dat een variabele als een getal wordt behandeld, voegt u er 0 aan toe; om het te dwingen om als een snaar te worden behandeld, het samenvoegen met de nulstring.

Wanneer een tekenreeks moet worden geconverteerd naar een getal, wordt de conversie voltooid met behulp van strtod (3). Een getal wordt geconverteerd naar een tekenreeks met de waarde van CONVFMT als een opmaakreeks voor sprintf (3), met de numerieke waarde van de variabele als argument. Hoewel alle getallen in AWK drijvende komma zijn, zijn integrale waarden dat wel altijd geconverteerd als gehele getallen. Aldus gegeven

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

de variabele b heeft een stringwaarde van '12' en niet '12.00'.

Gawk voert vergelijkingen als volgt uit: Als twee variabelen numeriek zijn, worden ze numeriek vergeleken. Als een waarde numeriek is en de andere een tekenreekswaarde heeft die een `` numerieke tekenreeks '' is, worden de vergelijkingen ook numeriek uitgevoerd. Anders wordt de numerieke waarde geconverteerd naar een tekenreeks en wordt een reeksvergelijking uitgevoerd. Twee strings worden natuurlijk vergeleken als strings. Merk op dat de POSIX-standaard het concept van `` numerieke reeks '' overal toepast, zelfs op tekenreeksconstanten. Dit is echter duidelijk onjuist, en gapen doet dit niet. (Gelukkig is dit opgelost in de volgende versie van de standaard.)

Houd er rekening mee dat tekenreeksconstanten, zoals '57', zijn niet numerieke reeksen, dit zijn tekenreeksconstanten. Het idee van `` numerieke reeks '' is alleen van toepassing op velden, getline invoer, BESTANDSNAAM, ARGV elementen, ENVIRON elementen en de elementen van een array gemaakt door split () dat zijn numerieke reeksen. Het basisidee is dat gebruikers invoer , en alleen gebruikersinvoer, die er numeriek uitziet, moet op die manier worden behandeld.

Niet-geïnitialiseerde variabelen hebben de numerieke waarde 0 en de tekenreekswaarde "" (de lege nul of tekenreeks).

Octale en hexadecimale constanten

Beginnend met versie 3.1 van gawk, je kunt octale en hexadecimale constanten in de C-stijl gebruiken in de broncode van je AWK-programma. Bijvoorbeeld de octale waarde 011 is gelijk aan decimaal 9en de hexadecimale waarde 0x11 is gelijk aan decimaal 17.

String Constants

Stringconstanten in AWK zijn reeksen tekens tussen dubbele aanhalingstekens ('). Binnen strings, zeker escape sequences worden herkend, zoals in C. Dit zijn:

\

Een letterlijke backslash.

een

Het `` alert''-teken; meestal het ASCII BEL-teken.

b

backspace.

f

-Vorm voeden.

n

nieuwe lijn.

r

rijterugkeer.

t

horizontaal tabblad.

v

verticale tab.

X hexadecimale cijfers

Het teken dat wordt weergegeven door de reeks hexadecimale cijfers na de X. Net als bij ANSIC worden alle volgende hexadecimale cijfers als onderdeel van de escape-reeks beschouwd. (Deze functie zou ons iets moeten vertellen over taalontwerp door de commissie.) Bijvoorbeeld: " X1B" is het ASCIIESC (escape) -karakter.

ddd

Het teken dat wordt weergegeven door de 1-, 2- of 3-cijferige reeks octale cijfers. bv ' 033' is het ASCII ESC (escape) -teken.

c

Het letterlijke karakter c .

De escape-sequenties kunnen ook worden gebruikt binnen constante reguliere expressies (bijv./ t f n r v / komt overeen met whitespace-tekens).

In de compatibiliteitsmodus worden de tekens die worden weergegeven door octale en hexadecimale escape-reeksen, letterlijk behandeld wanneer ze worden gebruikt in reguliere expressieconstanten. Dus, / A 52b / is gelijk aan/ A * b /.

Patronen en acties

AWK is een lijngerichte taal. Het patroon komt eerst, en dan de actie. Actieverklaringen zijn bijgevoegd { en }. Het patroon ontbreekt mogelijk of de actie ontbreekt misschien, maar natuurlijk niet allebei. Als het patroon ontbreekt, wordt de actie uitgevoerd voor elk afzonderlijk record van invoer. Een ontbrekende actie is gelijk aan

{print}

die het hele record afdrukt.

Opmerkingen beginnen met het teken `` # '' en gaan door tot het einde van de regel. Lege regels kunnen worden gebruikt om statements te scheiden. Normaal gesproken eindigt een instructie met een nieuwe regel, maar dit is niet het geval voor regels die eindigen op een ``, '', {, ?, :, &&of ||. Regels die eindigen op do of anders hebben ook hun verklaringen automatisch voortgezet op de volgende regel. In andere gevallen kan een regel worden voortgezet door deze te beëindigen met een ', in welk geval de nieuwe regel zal worden genegeerd.

Meerdere opdrachten kunnen op één regel worden geplaatst door ze te scheiden met een ``; ''. Dit geldt voor zowel de statements binnen het action-gedeelte van een pattern-action-paar (het gebruikelijke geval) als voor de pattern-action-statements zelf.

patronen

AWK-patronen kunnen een van de volgende zijn:

BEGINNEN EINDE / reguliere expressie / relationele expressie patroon && patroon patroon || patroon patroon ? patroon : patroon ( patroon ) ! patroon pattern1 , pattern2

BEGINNEN en EINDE zijn twee speciale soorten patronen die niet worden getoetst aan de invoer. De actiedelen van allemaal BEGINNEN patronen worden samengevoegd alsof alle uitspraken in een enkele zijn geschreven BEGINNEN blok. Ze worden uitgevoerd voordat een van de invoer wordt gelezen. Evenzo alle EINDE blokken worden samengevoegd en uitgevoerd wanneer alle invoer is uitgeput (of wanneer een Uitgang verklaring wordt uitgevoerd). BEGINNEN en EINDE patronen kunnen niet worden gecombineerd met andere patronen in patroonuitdrukkingen. BEGINNEN en EINDE patronen mogen geen missende actiedelen bevatten.

Voor / reguliere expressie / patronen, wordt de bijbehorende instructie uitgevoerd voor elke invoerrecord die overeenkomt met de reguliere expressie. Reguliere expressies zijn dezelfde als die in egrep (1), en zijn hieronder samengevat.

EEN relationele expressie kan een van de hieronder gedefinieerde operatoren gebruiken in het gedeelte over acties. Deze testen in het algemeen of bepaalde velden overeenkomen met bepaalde reguliere expressies.

De &&, ||, en ! operators zijn logisch EN, logisch OF, en logisch NIET, zoals in C. Ze doen kortsluitingsevaluatie, ook zoals in C, en worden gebruikt voor het combineren van meer primitieve patroonuitdrukkingen. Zoals in de meeste talen, kunnen haakjes worden gebruikt om de evaluatievolgorde te wijzigen.

De ?: operator is als dezelfde operator in C. Als het eerste patroon waar is, is het patroon dat voor het testen wordt gebruikt het tweede patroon, anders is het de derde. Slechts een van de tweede en derde patronen wordt geëvalueerd.

De pattern1 , pattern2 vorm van een uitdrukking wordt een a genoemd bereik patroon . Het komt overeen met alle invoerrecords beginnend met een record dat overeenkomt pattern1 en doorgaan tot een record dat overeenkomt pattern2 inclusief. Het combineert niet met een ander soort patroonuitdrukking.

Normale uitdrukkingen

Reguliere expressies zijn de uitgebreide soort die wordt gevonden in egrep . Ze zijn als volgt samengesteld uit tekens:

c

komt overeen met het niet-metateken c .

c

komt overeen met het letterlijke personage c .

.

komt overeen met elk teken inclusief nieuwe lijn.

^

komt overeen met het begin van een string.

$

komt overeen met het einde van een string.

abc…

tekenslijst, komt overeen met een van de tekens abc… .

^ abc…

lijst met genegeerde tekens, komt overeen met elk teken behalve abc… .

r1 | r2

afwisseling: komt overeen met een van beide r1 of r2 .

R1R2

aaneenschakeling: overeenkomsten r1 , en dan r2 .

r +

komt overeen met een of meer r 'S.

r *

komt overeen met nul of meer r 'S.

r ?

komt overeen met nul of één r 'S.

( r )

groepering: wedstrijden r .

r { n }

r { n ,}

r { n , m } Een of twee cijfers binnen de accolades geven een interval uitdrukking . Als er één cijfer tussen de accolades staat, de vorige reguliere expressie r wordt herhaald n tijden. Als er twee nummers zijn gescheiden door een komma, r wordt herhaald n naar m tijden. Als er een nummer is gevolgd door een komma, dan r wordt op zijn minst herhaald n tijden.

Interval-expressies zijn alleen beschikbaar als een van beide --posix of --re-interval is opgegeven op de opdrachtregel.

y

komt overeen met de lege reeks aan het begin of het einde van een woord.

B

komt overeen met de lege tekenreeks binnen een woord.

<

komt overeen met de lege reeks aan het begin van een woord.

>

komt overeen met de lege reeks aan het einde van een woord.

w

komt overeen met elk woord-bestanddeel (letter, cijfer of onderstrepingsteken).

w

komt overeen met elk teken dat geen woordbestanddeel is.

`

komt overeen met de lege reeks aan het begin van een buffer (tekenreeks).

'

komt overeen met de lege reeks aan het einde van een buffer.

De escape-sequences die geldig zijn in tekenreeksconstanten (zie hieronder) zijn ook geldig in reguliere expressies.

Karakter klassen zijn een nieuwe functie geïntroduceerd in de POSIX-standaard. Een tekenklasse is een speciale notatie voor het beschrijven van lijsten met tekens die een specifiek kenmerk hebben, maar waarbij de werkelijke tekens zelf kunnen variëren van land tot land en / of van tekenset tot tekenset. Bijvoorbeeld, de notie van wat een alfabetisch teken is, verschilt in de VS en in Frankrijk.

Een tekenklasse is alleen geldig in een reguliere expressie binnen de haakjes van een karakterlijst. Karakter klassen bestaan ​​uit :, een sleutelwoord ter aanduiding van de klasse, en :. De karakterklassen gedefinieerd door de POSIX-standaard zijn:

: Alnum:

Alfanumerieke tekens.

: Alpha:

Alfabetische karakters.

:blanco:

Spatie of tab karakters.

: Cntrl:

Beheer tekens.

:cijfer:

Numerieke tekens.

: Grafiek:

Tekens die zowel afdrukbaar als zichtbaar zijn. (Een spatie kan worden afgedrukt, maar niet zichtbaar, terwijl een een is allebei.)

:lager:

Alfabetische tekens in kleine letters.

:afdrukken:

Afdrukbare tekens (tekens die geen besturingspersonages zijn.)

: Punct:

Interpunctietekens (tekens die geen letter, cijfers, besturingstekens of spatietekens zijn).

:ruimte:

Ruimtetekens (zoals spatie, tab en formfeed, om er een paar te noemen).

:bovenste:

Alfabetische hoofdletters.

: Xdigit:

Tekens die hexadecimale cijfers zijn.

Voordat de POSIX-standaard bijvoorbeeld overeenkwam met alfanumerieke tekens, had u moeten schrijven / A-Za-Z0-9 /. Als uw tekenset andere alfabetische tekens bevat, zou dit niet overeenkomen en als uw tekenset anders is gesorteerd dan ASCII, komt dit mogelijk niet overeen met de ASCII-alfanumerieke tekens. Met de POSIX-tekenklassen kunt u schrijven/ : Alnum: /, en dit komt overeen met de alfabetische en numerieke tekens in uw tekenset.

Twee extra speciale reeksen kunnen in karakterlijsten verschijnen. Deze zijn van toepassing op niet-ASCII-tekensets, die kunnen bestaan ​​uit afzonderlijke symbolen (genaamd verzamelelementen ) die worden weergegeven met meer dan één teken, evenals meerdere tekens die hetzelfde zijn verzamelen of sortering. (Bijvoorbeeld, in het Frans zijn een gewone `` e '' en een e-markering met een groot accent equivalent.)

Symbolen verzamelen

Een sorteersymbool is een verzamelelement met meerdere tekens dat is ingesloten . en .. Bijvoorbeeld, als ch is een verzamelelement dan .Ch. is een reguliere expressie die overeenkomt met dit verzamelelement, terwijl Ch is een reguliere expressie die overeenkomt met een van beide c of h.

Equivalentieklassen

Een equivalentieklasse is een locale-specifieke naam voor een lijst met equivalente tekens. De naam is ingesloten = en =. Bijvoorbeeld de naam e kan worden gebruikt om alle `` e, '' `` e ',' 'en `` e` te vertegenwoordigen.' 'In dit geval = E = is een reguliere expressie die overeenkomt met een van e, e'of E`.

Deze functies zijn erg waardevol op niet Engelstalige locaties. De bibliotheek functioneert dat gapen gebruiken voor reguliere expressie-overeenkomsten herkennen momenteel alleen POSIX-tekenklassen; zij herkennen geen collating-symbolen of equivalentieklassen.

De y, B, <, >, w, w, `, en ' operators zijn specifiek voor gapen ; het zijn uitbreidingen op basis van faciliteiten in de GNU reguliere expressiebibliotheken.

De verschillende opdrachtregelopties bepalen hoe gapen interpreteert karakters in reguliere expressies.

Geen opties

In het standaardgeval, gapen bieden alle faciliteiten van POSIX reguliere expressies en de GNU reguliere expressie-operators die hierboven zijn beschreven. Interval-expressies worden echter niet ondersteund.

--posix

Alleen POSIX-reguliere expressies worden ondersteund, de GNU-operators zijn niet speciaal. (Bijvoorbeeld, w komt overeen met een letterlijke w). Interval-expressies zijn toegestaan.

--traditional

Traditionele Unix awk reguliere expressies worden gekoppeld. De GNU-operatoren zijn niet speciaal, interval-expressies zijn niet beschikbaar en de POSIX-karakterklassen zijn ook niet (: Alnum: enzovoorts). Karakters die worden beschreven door octale en hexadecimale escape-reeksen worden letterlijk behandeld, zelfs als deze metacharacters voor reguliere expressies vertegenwoordigen.

--re-interval

Laat interval-expressies toe in reguliere expressies, zelfs als --traditional is verstrekt.

acties

Actieverklaringen staan ​​tussen accolades, { en }. Actieverklaringen bestaan ​​uit de gebruikelijke opdrachten, conditionele en looping-statements die in de meeste talen voorkomen. De beschikbare operatoren, besturingsinstructies en invoer / uitvoeroverzichten zijn van een patroon voorzien na die in C.

operators

De operators in AWK, in volgorde van afnemende prioriteit, zijn

()

Groepering

$

Veldreferentie.

++ --

Verhogen en verlagen, zowel voorvoegsel als postfix.

^

Machtsverheffing (** kan ook worden gebruikt, en **= voor de toewijzingsoperator).

+ - !

Unary plus, unaire minus en logische ontkenning.

* / %

Vermenigvuldiging, deling en modulus.

+ -

Optellen en aftrekken.

ruimte

String aaneenschakeling.

< >

<= >=

!= == De reguliere relationele operatoren.

~ !~

Reguliere expressie match, negated match. NOTITIE: Gebruik geen constante reguliere expressie (/ Foo /) aan de linkerkant van een ~ of !~. Gebruik er alleen een aan de rechterkant. De uitdrukking / foo / ~ exp heeft dezelfde betekenis als (($ 0 ~ / foo /) ~ exp ). Dit is meestal niet wat was bedoeld.

in

Array-lidmaatschap.

&&

Logisch EN.

||

Logische OR.

?:

De C-voorwaardelijke uitdrukking. Dit heeft de vorm expr1 ? expr2 : expr3 . Als expr1 waar is, de waarde van de uitdrukking is expr2 , anders is het dat wel expr3 . Slechts een van expr2 en expr3 wordt geëvalueerd.

= += -=

*= /= %= ^= Opdracht. Beide absolute toewijzing ( var = waarde ) en operator-toewijzing (de andere vormen) worden ondersteund.

Controle verklaringen

De controle-instructies zijn als volgt:

als ( staat ) uitspraak anders uitspraak terwijl ( staat ) uitspraak do uitspraak terwijl ( staat ) voor ( expr1 ; expr2 ; expr3 ) uitspraak voor ( var in rangschikking ) uitspraak breken doorgaan met verwijderen rangschikking inhoudsopgave verwijderen rangschikking Uitgang uitdrukking { statements }

I / O-verklaringen

De invoer / uitvoer-instructies zijn als volgt:

dichtbij( het dossier , hoe )

Bestand, pijp of co-proces sluiten. De optionele hoe mag alleen worden gebruikt bij het sluiten van het ene uiteinde van een bidirectionele buis naar een co-proces. Het moet ook een tekenreekswaarde zijn "naar" of "van".

getline

set $0 van volgend invoerrecord; reeks NF, NR, FNR.

getline < het dossier

set $0 uit volgend record van het dossier ; reeks NF.

getline var

set var van volgend invoerrecord; reeks NR, FNR.

getline var < het dossier

set var uit volgend record van het dossier .

commando | getline var

Rennen commando piping van de uitgang naar $0 of var , zoals hierboven.

commando | & getline var

Rennen commando als een co-proces dat de uitvoer doorverbindt naar $0 of var , zoals hierboven. Co-processen zijn een gapen uitbreiding.

volgende

Stop met het verwerken van het huidige invoerrecord. Het volgende invoerrecord wordt gelezen en de verwerking begint opnieuw met het eerste patroon in het AWK-programma. Als het einde van de invoergegevens is bereikt, wordt het EINDE blok (ken), indien aanwezig, worden uitgevoerd.

nextfile

Stop met het verwerken van het huidige invoerbestand. Het volgende gelezen ingangsrecord komt van het volgende invoerbestand. BESTANDSNAAM en ARGIND zijn bijgewerkt, FNR wordt teruggezet op 1 en de verwerking begint opnieuw met het eerste patroon in het AWK-programma. Als het einde van de invoergegevens is bereikt, wordt het EINDE blok (ken), indien aanwezig, worden uitgevoerd.

afdrukken

Drukt het huidige record af. Het uitvoerrecord wordt beëindigd met de waarde van de ORS variabel.

afdrukken expr-list

Hiermee drukt u uitdrukkingen af. Elke uitdrukking wordt gescheiden door de waarde van de OFS variabel. Het uitvoerrecord wordt beëindigd met de waarde van de ORS variabel.

afdrukken expr-list > het dossier

Drukt expressies op af het dossier . Elke uitdrukking wordt gescheiden door de waarde van de OFS variabel. Het uitvoerrecord wordt beëindigd met de waarde van de ORS variabel.

printf fmt, expr-list

Formatteren en afdrukken.

printf fmt, expr-list > het dossier

Formatteren en afdrukken op het dossier .

systeem( cmd-lijn )

Voer het commando uit cmd-lijn en stuur de exit-status terug. (Dit is mogelijk niet beschikbaar op niet-POSIX-systemen.)

fflush ( het dossier )

Spoel eventuele buffers die horen bij het open uitvoerbestand of de pipe het dossier . Als het dossier ontbreekt, dan wordt standaarduitvoer gewist. Als het dossier is de nulstring, dan worden alle buffers op alle open uitvoerbestanden en -pijpen gespoeld.

Extra uitvoeromleidingen zijn toegestaan afdrukken en printf.

afdrukken … >> het dossier

voegt output toe aan de het dossier .

afdrukken … | commando

schrijft op een pijp.

print … | & commando

stuurt gegevens naar een co-proces.

De getline commando retourneert 0 aan het einde van het bestand en -1 aan een fout. Bij een fout, errno bevat een string die het probleem beschrijft.

NOTITIE: Als u een pijp of co-proces gebruikt getlineof van afdrukken of printf binnen een lus, jij moet gebruik dichtbij() om nieuwe exemplaren van de opdracht te maken. AWK sluit niet automatisch buizen of co-processen als ze EOF retourneren.

De printf-verklaring

De AWK-versies van de printf verklaring en sprintf () functie (zie hieronder) accepteer de volgende indelingen voor conversiespecificatie:

% c

Een ASCII-teken. Als het argument wordt gebruikt voor % c is numeriek, het wordt als een teken behandeld en afgedrukt. Anders wordt aangenomen dat het argument een tekenreeks is en wordt het enige eerste teken van die reeks afgedrukt.

% d, %ik

Een decimaal getal (het gehele deel).

% e,% E

Een drijvend kommagetal van het formulier - d.dddddde + - dd. De % E formaat gebruik E in plaats van e.

% f

Een drijvend kommagetal van het formulier - ddd.dddddd.

% g,% G

Gebruik % e of % f conversie, afhankelijk van welke het kortst is, waarbij niet-significante nullen worden onderdrukt. De% G formaat gebruik % E in plaats van % e.

%O

Een niet-ondertekend octaal getal (ook een geheel getal).

% u Een niet-ondertekend decimaal getal (nogmaals, een geheel getal).

% s

Een tekenreeks.

% x,% X

Een niet-ondertekend hexadecimaal getal (een geheel getal). De %X formaat gebruik ABCDEF in plaats vanabcdef.

%%

Een % karakter; geen enkel argument wordt geconverteerd.

Optioneel kunnen extra parameters liggen tussen de % en de besturingsletter:

tellen $

Gebruik de tellen 'th argument op dit punt in de opmaak. Dit wordt a genoemd positionele specificeerder en is voornamelijk bedoeld voor gebruik in vertaalde versies van opmaakstrings, niet in de originele tekst van een AWK-programma. Het is een gapen uitbreiding.

-

De uitdrukking moet in het veld links uitgelijnd zijn.

ruimte

Voor numerieke conversies prefix positieve waarden met een spatie en negatieve waarden met een minteken.

+

Het plusteken dat vóór de breedtemodificator werd gebruikt (zie hieronder), zegt dat altijd een teken moet worden opgegeven voor numerieke conversies, zelfs als de gegevens die moeten worden opgemaakt positief zijn. De + overschrijft de ruimte-modifier.

#

Gebruik een `` alternatieve vorm '' voor bepaalde besturingsletters. Voor %O, leveren een toonaangevende nul. Voor %X, en %X, lever een leidende rol 0x of 0X voor een niet-nulresultaat. Voor % e, % E, en % f, het resultaat bevat altijd een decimale punt. Voor % g, en % GNullen achteraan worden niet uit het resultaat verwijderd.

0

Een leidende 0 (nul) fungeert als een vlag, die aangeeft dat uitvoer moet worden opgevuld met nullen in plaats van spaties. Dit geldt zelfs voor niet-numerieke uitvoerformaten. Deze vlag heeft alleen een effect wanneer de veldbreedte breder is dan de waarde die moet worden afgedrukt.

breedte

Het veld moet op deze breedte worden opgevuld. Het veld is normaal opgevuld met spaties. Als het 0vlag is gebruikt, is opgevuld met nullen.

. prec

Een getal dat de precisie aangeeft die moet worden gebruikt bij het afdrukken. Voor de % e, % E, en % fformaten, dit geeft het aantal cijfers aan dat u rechts van de komma wilt afdrukken. Voor de % g, en % G formaten, specificeert het het maximale aantal significante cijfers. Voor de % d, %O, %ik, % u, %X, en %X formaten, specificeert het het minimum aantal cijfers dat moet worden afgedrukt. Voor % s, specificeert het het maximumaantal tekens van de reeks die moet worden afgedrukt.

De dynamiek breedte en prec mogelijkheden van de ANSI C printf () routines worden ondersteund. EEN * in plaats van de breedte of prec specificaties zorgt ervoor dat hun waarden worden overgenomen van de lijst met argumenten naar printf of sprintf (). Om een ​​positionele specificatie met een dynamische breedte of precisie te gebruiken, geeft u de tellen $ na de * in de format string. Bijvoorbeeld, "% 3 $ * 2 $. * 1 $ s".

Speciale bestandsnamen

Bij het doen van I / O-omleiding van een van beide afdrukken of printf in een bestand of via getline van een bestand, gapen herkent bepaalde speciale bestandsnamen intern. Deze bestandsnamen geven toegang tot geopende bestandsbeschrijvingen waarvan wordt geërfd gapen het ouderproces (meestal de shell). Deze bestandsnamen kunnen ook op de opdrachtregel worden gebruikt om databestanden een naam te geven. De bestandsnamen zijn:

/ Dev / stdin

De standaard invoer.

/ Dev / stdout

De standaarduitvoer.

/ Dev / stderr

De standaard foutuitvoer.

/ Dev / fd / n

Het bestand dat is gekoppeld aan de open bestandsdescriptor n .

Deze zijn met name handig voor foutmeldingen. Bijvoorbeeld:

print "Je hebt het verpest!" > "/ dev / stderr"

terwijl je anders zou moeten gebruiken

print "Je hebt het verpest!" | "kat 1> en 2"

De volgende speciale bestandsnamen kunnen worden gebruikt met de |& mede-verwerker voor het maken van TCP / IP-netwerkverbindingen.

/ Inet / tcp / lport / rhost / RPORT

Bestand voor TCP / IP-verbinding op lokale poort lport naar externe host rhost op externe poort RPORT . Gebruik een poort van 0 om het systeem een ​​poort te laten kiezen.

/ Inet / udp / lport / rhost / RPORT

Gelijkaardig, maar gebruik UDP / IP in plaats van TCP / IP.

/ Inet / raw / lport / rhost / RPORT

Gereserveerd voor toekomstig gebruik.

Andere speciale bestandsnamen bieden toegang tot informatie over de werking gapen werkwijze. Deze bestandsnamen zijn nu verouderd. Gebruik de procinfo array om de informatie te verkrijgen die ze bieden. De bestandsnamen zijn:

/ Dev / pid

Als u dit bestand leest, wordt de proces-id van het huidige proces, in decimale vorm, geretourneerd met een nieuwe regel.

/ Dev / ppid

Het lezen van dit bestand retourneert de bovenliggende proces-ID van het huidige proces, in decimaal, afgesloten met een nieuwe regel.

/ Dev / pgrpid

Als u dit bestand leest, wordt de procesgroep-ID van het huidige proces, in decimale vorm, geretourneerd met een nieuwe regel.

/ Dev / user

Als u dit bestand leest, wordt een enkele record geretourneerd die is afgesloten met een nieuwe regel. De velden worden gescheiden door spaties. $1 is de waarde van de getuid (2) systeemoproep, $2 is de waarde van de geteuid (2) systeemoproep, $3 is de waarde van de getgid (2) systeemoproep, en $4 is de waarde van de getegid (2) systeemoproep. Als er extra velden zijn, zijn dit de groeps-id's die worden geretourneerd door getgroups (2). Meerdere groepen worden mogelijk niet op alle systemen ondersteund.

Numerieke functies

AWK heeft de volgende ingebouwde rekenfuncties:

atan2 ( Y , X )

Retourneert de boogtangens van y / x in radialen.

cos ( expr )

Retourneert de cosinus van expr , wat in radialen is.

exp ( expr )

De exponentiële functie.

int ( expr )

Trunceert naar integer.

inloggen ( expr )

De natuurlijke logaritmefunctie.

rand()

Retourneert een willekeurig getal tussen 0 en 1.

zonde( expr )

Retourneert de sinus van expr , wat in radialen is.

sqrt ( expr )