EngelsFransSpaans

Ad


OnWorks-favicon

gawk - Online in de cloud

Voer gawk uit in de gratis hostingprovider van OnWorks via Ubuntu Online, Fedora Online, Windows online emulator of MAC OS online emulator

Dit is de opdrachtgawk die kan worden uitgevoerd in de gratis hostingprovider van OnWorks met behulp van een van onze meerdere gratis online werkstations zoals Ubuntu Online, Fedora Online, Windows online emulator of MAC OS online emulator

PROGRAMMA:

NAAM


gawk - patroonscan- en verwerkingstaal

KORTE INHOUD


gapen [ POSIX- of GNU-stijlopties ] -f programmabestand [ -- ] het dossier ...
gapen [ POSIX- of GNU-stijlopties ] [ -- ] programma-tekst het dossier ...

PRODUCTBESCHRIJVING


Gaaf is de implementatie van de programmeertaal AWK door het GNU Project. Het voldoet aan
de definitie van de taal in de POSIX 1003.1-standaard. Deze versie is op zijn beurt
gebaseerd op de beschrijving in De AWK Programming Taal, door Aho, Kernighan en
Weinberger. Gaaf biedt de extra functies van de huidige versie van Brian
Kernighan's awk en een aantal GNU-specifieke extensies.

De opdrachtregel bestaat uit opties om gapen zelf, de AWK-programmatekst (indien niet meegeleverd
via de -f or --het dossier opties) en waarden die beschikbaar moeten worden gemaakt in de ARGC en ARGV pre-
gedefinieerde AWK-variabelen.

. gapen wordt aangeroepen met de --profiel optie, begint het met het verzamelen van profileringsstatistieken
vanaf de uitvoering van het programma. Gaaf werkt in deze modus langzamer en automatisch
produceert een uitvoeringsprofiel in het bestand awkprof.uit wanneer klaar. Zie de --profiel
optie, hieronder.

Gaaf heeft ook een geïntegreerde debugger. Een interactieve foutopsporingssessie kan worden gestart door
leveren van de --debuggen optie op de opdrachtregel. Bij deze uitvoeringswijze gapen ladingen
de AWK-broncode en vraagt ​​vervolgens om foutopsporingsopdrachten. Gaaf kan alleen AWK debuggen
programmabron die bij de -f keuze. De debugger is gedocumenteerd in GAWK: effectief
AWK Programming.

OPTIE FORMAT


Gaaf opties kunnen traditionele POSIX-stijl één-letteropties zijn, of GNU-stijl lang
opties. POSIX-opties beginnen met een enkele “-”, terwijl lange opties beginnen met “--”. Lang
Er zijn opties beschikbaar voor zowel GNU-specifieke functies als voor door POSIX verplichte functies.

Gaaf-specifieke opties worden doorgaans gebruikt in de vorm van lange opties. Argumenten voor lange opties
zijn ofwel verbonden met de optie door een = teken, zonder tussenliggende spaties, of dat kunnen ze wel zijn
opgegeven in het volgende opdrachtregelargument. Lange opties mogen worden afgekort, zolang
de afkorting blijft uniek.

Bovendien heeft elke longoptie een overeenkomstige shortoptie, zodat de optie's
functionaliteit kan van binnenuit worden gebruikt #! uitvoerbare scripts.

OPTIES


Gaaf accepteert de volgende opties. Standaardopties worden eerst vermeld, gevolgd door
opties voor gapen extensies, alfabetisch gerangschikt op korte optie.

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

-F fs
--veld-scheidingsteken fs
Te gebruiken fs voor het invoerveldscheidingsteken (de waarde van de FS vooraf gedefinieerde variabele).

-v var=golf
--toewijzen var=golf
Wijs de waarde toe golf naar de variabele var, voordat de uitvoering van het programma begint.
Dergelijke variabelewaarden zijn beschikbaar voor de BEGINNEN regel van een AWK-programma.

-b
--tekens-als-bytes
Behandel alle invoergegevens als tekens van één byte. Met andere woorden, betaal niets
let op de landinstellingen wanneer u probeert tekenreeksen als multibyte te verwerken
karakters. De --positief optie overschrijft deze.

-c
--traditioneel
binnenlopen verenigbaarheid modus. In de compatibiliteitsmodus, gapen gedraagt ​​zich identiek aan
Brian Kernighan's awk; geen van de GNU-specifieke extensies wordt herkend. Zien GNU
EXTENSIONS, hieronder, voor meer informatie.

-C
--auteursrechten
Druk de korte versie van het GNU-copyrightinformatiebericht op de standaard af
uitvoeren en succesvol afsluiten.

-d[filet]
--dump-variabelen[=filet]
Druk een gesorteerde lijst met globale variabelen, hun typen en uiteindelijke waarden af filet. Indien
geen filet is voorzien, gapen gebruikt een bestand met de naam awkvars.uit in de huidige map.
Het hebben van een lijst met alle globale variabelen is een goede manier om typografisch te zoeken
fouten in uw programma's. Je zou deze optie ook gebruiken als je een grote hebt
programma met veel functies, en u wilt er zeker van zijn dat uw functies dat niet doen
onbedoeld globale variabelen gebruikt waarvan u bedoelde dat ze lokaal waren. (Dit is een
bijzonder gemakkelijke fout om te maken met eenvoudige namen van variabelen, zoals i, j, enzovoort.)

-D[filet]
--debuggen[=filet]
Schakel foutopsporing van AWK-programma's in. Standaard leest de debugger opdrachten
interactief vanaf het toetsenbord (standaardinvoer). De optionele filet argument
specificeert een bestand met een lijst met opdrachten waarmee de debugger niet-
interactief.

-e programma-tekst
--bron programma-tekst
Te gebruiken programma-tekst als AWK-programmabroncode. Deze optie maakt het gemakkelijk
vermenging van bibliotheekfuncties (gebruikt via de -f en --het dossier opties) met bron
code ingevoerd op de opdrachtregel. Het is vooral bedoeld voor middelgrote tot grote AWK's
programma's die in shellscripts worden gebruikt.

-E filet
--exec filet
Soortgelijke -fDit is echter de optie die als laatste wordt verwerkt. Dit zou moeten zijn
gebruikt met #! scripts, vooral voor CGI-toepassingen, om te voorkomen dat ze worden doorgegeven
opties of broncode (!) op de opdrachtregel vanaf een URL. Deze optie wordt uitgeschakeld
toewijzingen van opdrachtregelvariabelen.

-g
--gen-pot
Scan en parseer het AWK-programma en genereer een GNU .pot (Draagbare objectsjabloon)
format-bestand op standaarduitvoer met vermeldingen voor alle lokaliseerbare tekenreeksen in het
programma. Het programma zelf wordt niet uitgevoerd. Zie de GNU gettext distributie voor
meer informatie over .pot bestanden.

-h
--help Druk een relatief korte samenvatting van de beschikbare opties af op de standaarduitvoer.
(Per de GNU codering NormenDeze opties zorgen voor een onmiddellijke, succesvolle exit.)

-i include-bestand
--erbij betrekken include-bestand
Laad een awk-bronbibliotheek. Hiermee wordt naar de bibliotheek gezocht met behulp van de AWKPAD
omgevingsvariabele. Als de eerste zoekactie mislukt, wordt een nieuwe poging ondernomen
na het toevoegen van de .awk achtervoegsel. Het bestand wordt slechts één keer geladen (dat wil zeggen:
duplicaten worden geëlimineerd) en de code vormt niet het hoofdprogramma
bron.

-l lib
--laden lib
Laad een gedeelde bibliotheek lib. Hiermee wordt naar de bibliotheek gezocht met behulp van de AWKLIBPAD
omgevingsvariabele. Als de eerste zoekactie mislukt, wordt een nieuwe poging ondernomen
na het toevoegen van het standaardachtervoegsel van de gedeelde bibliotheek voor het platform. De bibliotheek
Er wordt verwacht dat de initialisatieroutine een naam krijgt dl_load().

-L [waarde]
--lint[=waarde]
Geef waarschuwingen over constructies die twijfelachtig zijn of niet overdraagbaar zijn naar andere AWK
implementaties. Met een optioneel argument van fataal, pluiswaarschuwingen worden fataal
fouten. Dit kan ingrijpend zijn, maar het gebruik ervan zal de ontwikkeling zeker bevorderen
van schonere AWK-programma's. Met een optioneel argument van ongeldig, alleen waarschuwingen over
er worden dingen uitgegeven die feitelijk ongeldig zijn. (Dit is nog niet volledig geïmplementeerd.)

-M
--groot
Forceer willekeurige precisieberekeningen op getallen. Deze optie heeft geen effect als gapen
is niet gecompileerd om de GNU MPFR- en MP-bibliotheken te gebruiken.

-n
--niet-decimale gegevens
Herken octale en hexadecimale waarden in invoergegevens. Te gebruiken dit optie Met groot
voorzichtigheid!

-N
--gebruik-lc-numeriek
Deze krachten gapen om het decimaalteken van de landinstelling te gebruiken bij het parseren van invoer
gegevens. Hoewel de POSIX-standaard dit gedrag vereist, en gapen doet dat wanneer
--positief In feite is het de standaard om traditioneel gedrag te volgen en een
punt als decimaalteken, zelfs op plaatsen waar de punt niet het decimaalteken is
punt karakter. Deze optie overschrijft het standaardgedrag, zonder het volledige
draconische strengheid van de --positief optie.

-o[filet]
--mooi-afdruk[=filet]
Voer een mooie gedrukte versie van het programma uit naar filet​ Als Nee filet is voorzien,
gapen gebruikt een bestand met de naam awkprof.uit in de huidige map.

-O
--optimaliseren
Schakel optimalisaties in op de interne representatie van het programma. Momenteel,
dit omvat eenvoudig constant vouwen en eliminatie van staartoproepen voor recursief
functies. De gapen De beheerder hoopt in de loop van de tijd aanvullende optimalisaties toe te voegen.

-p[prof-bestand]
--profiel[=prof-bestand]
Start een profileringssessie en stuur de profileringsgegevens naar prof-bestand. De standaard
is awkprof.uit. Het profiel bevat uitvoeringstellingen van elke instructie in de
programma in de linkermarge en het aantal functieaanroepen voor elke door de gebruiker gedefinieerde functie.

-P
--positief
Dit wordt ingeschakeld verenigbaarheid modus, met de volgende aanvullende beperkingen:

· \x ontsnappingssequenties worden niet herkend.

· Alleen spatie en tab fungeren als veldscheidingstekens FS is ingesteld op één spatie,
nieuwe regel niet.

· Je kunt de regels daarna niet voortzetten ? en :.

· Het synoniem func voor het trefwoord functie is niet herkend.

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

-r
--herinterval
Schakel het gebruik van in interval uitdrukkingen bij het matchen van reguliere expressies (zie Normaal
Uitdrukkingen, onderstaand). Intervalexpressies waren traditioneel niet beschikbaar in de
AWK-taal. De POSIX-standaard heeft ze toegevoegd om te maken awk en egr overeenstemming met
elkaar. Ze zijn standaard ingeschakeld, maar deze optie blijft voor gebruik bij
--traditioneel.

-S
--zandbak
Runs gapen in de sandbox-modus, door de systeem() functie, invoeromleiding met
getlijn, uitvoeromleiding met print en printfen dynamische extensies laden.
Het uitvoeren van opdrachten (via pijpleidingen) is ook uitgeschakeld. Dit blokkeert effectief a
script geen toegang krijgt tot lokale bronnen (behalve de bestanden die zijn opgegeven in het
opdrachtregel).

-t
--lint-oud
Geef waarschuwingen over constructies die niet overdraagbaar zijn naar de originele versie van
UNIX awk.

-V
--versie
Printversie-informatie voor dit specifieke exemplaar van gapen op de standaarduitvoer.
Dit is vooral handig om te weten of de huidige kopie van gapen op uw systeem is actief
tot nu toe met betrekking tot alles wat de Free Software Foundation distribueert.
Dit is ook handig bij het melden van bugs. (Per de GNU codering NormenDeze
opties leiden tot een onmiddellijke, succesvolle exit.)

-- Signaleer het einde van de opties. Dit is nuttig om verdere argumenten voor de AWK mogelijk te maken
programmeer jezelf om te beginnen met een “-”. Dit zorgt voor consistentie met het betoog
parseerconventie die door de meeste andere POSIX-programma's wordt gebruikt.

In de compatibiliteitsmodus worden alle andere opties als ongeldig gemarkeerd, maar dat is anders
buiten beschouwing gelaten. Bij normaal gebruik, zolang programmatekst is aangeleverd, onbekende opties
worden doorgegeven aan het AWK-programma in de ARGV array voor verwerking. Dit is bijzonder
handig voor het uitvoeren van AWK-programma's via de "#!" uitvoerbaar tolkmechanisme.

Voor POSIX-compatibiliteit is de -W optie kan worden gebruikt, gevolgd door de naam van een lange optie.

AWK PROGRAMMA EXECUTIE


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

@erbij betrekken "bestandsnaam"
@laden "bestandsnaam"
patroon { actie verklaringen }
functie naam(parameter lijst) { verklaringen }

Gaaf leest eerst de programmabron uit het programmabestand(s) indien opgegeven, uit argumenten
naar --bron, of vanaf het eerste niet-optieargument op de opdrachtregel. De -f en
--bron opties kunnen meerdere keren op de opdrachtregel worden gebruikt. Gaaf leest het programma
tekst alsof alle programmabestands en opdrachtregelbronteksten waren aaneengeschakeld
samen. Dit is handig voor het bouwen van bibliotheken met AWK-functies, zonder dat u dat hoeft te doen
neem ze op in elk nieuw AWK-programma dat ze gebruikt. Het biedt ook de mogelijkheid om te mixen
bibliotheekfuncties met opdrachtregelprogramma's.

Bovendien, regels die beginnen met @erbij betrekken kan worden gebruikt om andere bronbestanden op te nemen
uw programma, waardoor het gebruik van de bibliotheek nog eenvoudiger wordt. Dit komt overeen met het gebruik van de -i optie.

Regels beginnend met @laden kan worden gebruikt om gedeelde bibliotheken in uw programma te laden. Dit
is gelijk aan het gebruik van de -l optie.

De omgevingsvariabele AWKPAD specificeert een zoekpad dat moet worden gebruikt bij het vinden van bronbestanden
genoemd met de -f en -i opties. Als deze variabele niet bestaat, is het standaardpad
".:/usr/local/share/awk". (De werkelijke map kan variëren, afhankelijk van hoe gapen was
gebouwd en geïnstalleerd.) Als er een bestandsnaam wordt gegeven aan de -f optie bevat een “/” teken, nee
padzoekopdracht wordt uitgevoerd.

De omgevingsvariabele AWKLIBPAD specificeert een zoekpad dat moet worden gebruikt bij het vinden van de bron
bestanden met de naam -l keuze. Als deze variabele niet bestaat, is het standaardpad
"/usr/local/lib/gawk". (De werkelijke map kan variëren, afhankelijk van hoe gapen was gebouwd
en geïnstalleerd.)

Gaaf voert AWK-programma's uit in de volgende volgorde. Eerst alle variabele toewijzingen
opgegeven via de -v optie worden uitgevoerd. Volgende, gapen compileert het programma in een
interne vorm. Dan, gapen voert de code uit in de BEGINNEN regel(s) (indien aanwezig), en dan
gaat verder met het lezen van elk bestand met de naam in de ARGV array (tot ARGV[ARGC]). Als er geen
bestanden met de naam op de opdrachtregel, gapen leest de standaard invoer.

Als een bestandsnaam op de opdrachtregel de vorm heeft var=golf het wordt behandeld als een variabele
opdracht. De variabele var krijgt de waarde toegewezen golf. (Dit gebeurt na elk
BEGINNEN regel(s) zijn uitgevoerd.) Toewijzing van opdrachtregelvariabelen is het nuttigst voor
het dynamisch toewijzen van waarden aan de variabelen die AWK gebruikt om te bepalen hoe de invoer wordt opgedeeld
velden en records. Het is ook handig voor het controleren van de status als er meerdere passen nodig zijn
over één gegevensbestand.

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

Voor elk invoerbestand, als a BEGINBESTAND regel bestaat, gapen voert de bijbehorende code eerder uit
het verwerken van de inhoud van het bestand. Op dezelfde manier, gapen voert de bijbehorende code uit
EINDBESTAND na verwerking van het bestand.

Voor elk record in de invoer, gapen testen om te zien of het overeenkomt patroon in de AWK
programma. Voor elk patroon waarmee de plaat overeenkomt, gapen voert het bijbehorende uit actie.
De patronen worden getest in de volgorde waarin ze in het programma voorkomen.

Eindelijk, nadat alle input is uitgeput, gapen voert de code uit in de EINDE regel(s) (indien
elk).

commando Lijn Directories
Volgens POSIX kunnen bestanden met de naam awk opdrachtregel moet uit tekstbestanden bestaan. Het gedrag
is ``ongedefinieerd'' als dat niet het geval is. De meeste versies van awk behandel een map op de opdracht
lijn als een fatale fout.

Vanaf versie 4.0 van gapen, een map op de opdrachtregel geeft een waarschuwing, maar
wordt anders overgeslagen. Als een van de --positief or --traditioneel Er worden dan opties gegeven
gapen keert terug naar het behandelen van mappen op de opdrachtregel als een fatale fout.

VARIABELEN, RECORDS EN FIELDS


AWK-variabelen zijn dynamisch; ze ontstaan ​​wanneer ze voor het eerst worden gebruikt. Hun
waarden zijn getallen met drijvende komma of tekenreeksen, of beide, afhankelijk van hoe ze zijn
gebruikt. AWK heeft ook eendimensionale arrays; arrays met meerdere dimensies kunnen dat wel zijn
gesimuleerd. Gaaf biedt echte arrays van arrays; zien arrays, onderstaand. Verschillende vooraf gedefinieerd
variabelen worden ingesteld terwijl een programma wordt uitgevoerd; deze worden indien nodig beschreven en hieronder samengevat.

Archief
Normaal gesproken worden records gescheiden door nieuweregeltekens. U kunt bepalen hoe records worden weergegeven
gescheiden door waarden toe te wijzen aan de ingebouwde variabele RS. Indien 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. Echter, binnen
compatibiliteitsmodus, wordt alleen het eerste teken van de tekenreekswaarde gebruikt voor het scheiden
records. Als RS is ingesteld op de nultekenreeks, dan worden de records gescheiden door lege regels.
. RS is ingesteld op de nultekenreeks, fungeert het teken voor de nieuwe regel altijd als veldscheidingsteken,
naast welke waarde dan ook FS zou kunnen hebben.

Velden
Terwijl elk invoerrecord wordt gelezen, gapen splitst het record op in velden, met behulp van de waarde van de
FS variabele als veldscheidingsteken. Als FS is één teken, de velden worden gescheiden door
dat karakter. Als FS is de nulreeks, dan wordt elk individueel teken een
apart veld. Anders, FS Er wordt verwacht dat dit een volledige reguliere expressie is. In de
bijzonder geval dit FS een enkele spatie is, worden de velden gescheiden door reeksen spaties en/of tabs
en/of nieuwe regels. (Maar zie de sectie POSIX COMPATIBILITEIT, onderstaand). NOTITIE: De waarde van
NEGEER ZAAK (zie hieronder) heeft ook invloed op de manier waarop velden worden gesplitst FS is een reguliere expressie,
en hoe records wanneer worden gescheiden RS is een reguliere expressie.

Indien de VELDBREEDTE variabele is ingesteld op een door spaties gescheiden lijst met getallen, elk veld is dat
naar verwachting een vaste breedte hebben, en gapen splitst de record op met behulp van de opgegeven breedtes.
De waarde van FS wordt genegeerd. Een nieuwe waarde toekennen aan FS or FPAT overschrijft het gebruik van
VELDBREEDTE.

Evenzo, als het FPAT variabele wordt ingesteld op een tekenreeks die elk een reguliere expressie vertegenwoordigt
veld bestaat uit tekst die overeenkomt met die reguliere expressie. In dit geval de reguliere
expressie beschrijft de velden zelf, in plaats van de tekst die de velden scheidt.
Een nieuwe waarde toekennen aan FS or VELDBREEDTE overschrijft het gebruik van FPAT.

Naar elk veld in het invoerrecord kan worden verwezen op basis van zijn positie: $1, $2, Enzovoort. $0
is het hele record. Er hoeft niet naar velden te worden verwezen door constanten:

n = 5
print $n

drukt het vijfde veld in het invoerrecord af.

De variabele NF wordt ingesteld op het totaal aantal velden in het invoerrecord.

Verwijzingen naar niet-bestaande velden (dat wil zeggen velden erna $ NF) produceren de nul-string.
Als u echter een niet-bestaand veld toewijst (bijv. $(NF+2) = 5) verhoogt de waarde van NF,
creëert eventuele tussenliggende velden met de null-tekenreeks als hun waarden, en veroorzaakt de waarde
of $0 opnieuw worden berekend, waarbij de velden worden gescheiden door de waarde van FSO. Referenties
naar negatief genummerde velden veroorzaken een fatale fout. Afnemend NF veroorzaakt de waarden van
velden voorbij de nieuwe waarde die verloren gaat, en de waarde van $0 opnieuw te berekenen, met de
velden worden gescheiden door de waarde van FSO.

Als u een waarde aan een bestaand veld toewijst, wordt het hele record opnieuw opgebouwd $0 is
waarnaar wordt verwezen. Op dezelfde manier kunt u een waarde toekennen aan $0 zorgt ervoor dat de record opnieuw wordt gesplitst, waardoor
nieuwe waarden voor de velden.

Ingebouwd Variabelen
GaafDe ingebouwde variabelen zijn:

ARGC Het aantal opdrachtregelargumenten (bevat geen opties om gapenOf de
programmabron).

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

ARGV Array van opdrachtregelargumenten. De array wordt geïndexeerd van 0 tot ARGC - 1.
Dynamisch veranderen van de inhoud van ARGV kan de bestanden beheren die voor gegevens worden gebruikt.

BINMODE Specificeert op niet-POSIX-systemen het gebruik van de “binaire” modus voor alle bestands-I/O.
Numerieke waarden van 1, 2 of 3 geven aan dat invoerbestanden, uitvoerbestanden of allemaal moeten worden gebruikt
bestanden moeten respectievelijk binaire I/O gebruiken. Tekenreekswaarden van "R"of "w"
specificeer dat invoerbestanden of uitvoerbestanden binair moeten zijn
IO. Tekenreekswaarden van "rw" or "wr" specificeer dat alle bestanden binair moeten zijn
IO. Elke andere tekenreekswaarde wordt behandeld als "rw", maar genereert een waarschuwing
bericht.

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

MILIEU Een array met de waarden van de huidige omgeving. De reeks is
geïndexeerd door de omgevingsvariabelen, waarbij elk element de waarde daarvan is
variabel (bijv. OMGEVING["HUIS"] kan zijn "/home/arnold"). Deze array wijzigen
heeft geen invloed op het milieu gezien door programma's die gapen spawnt via
omleiding of de systeem() functie.

FOUT Als er een systeemfout optreedt, wordt er een omleiding voor uitgevoerd getlijn, tijdens het lezen
For getlijn, of tijdens een dichtbij()dan FOUT zal een string bevatten die beschrijft
de fout. De waarde is onderhevig aan vertaling in niet-Engelse talen.

VELDBREEDTE Een door spaties gescheiden lijst met veldbreedtes. Indien ingesteld, gapen parseert de invoer
in velden met een vaste breedte, in plaats van de waarde van de te gebruiken FS variabel als
het veldscheidingsteken. Zien Velden, bovenstaande.

BESTANDSNAAM De naam van het huidige invoerbestand. Als er geen bestanden zijn opgegeven bij de opdracht
lijn, de waarde van BESTANDSNAAM is "-". Echter, BESTANDSNAAM is ongedefinieerd binnen de
BEGINNEN regel (tenzij ingesteld door getlijn).

FNR Het invoerrecordnummer in het huidige invoerbestand.

FPAT Een reguliere expressie die de inhoud van de velden in een record beschrijft. Wanneer
set, gapen parseert de invoer in velden, waarbij de velden overeenkomen met de reguliere velden
expressie, in plaats van de waarde van de FS variabele als het veld
scheidingsteken. Zien Velden, bovenstaande.

FS Het invoerveldscheidingsteken, standaard een spatie. Zien Velden, bovenstaande.

FUNCTAB Een array waarvan de indices en corresponderende waarden de namen zijn van alle gebruikers-
gedefinieerde of uitbreidingsfuncties in het programma. NOTITIE: U mag de
verwijderen verklaring met de FUNCTAB matrix.

NEGEER ZAAK Beheert de hoofdlettergevoeligheid van alle reguliere expressie- en tekenreeksbewerkingen.
If NEGEER ZAAK een waarde heeft die niet nul is, daarna tekenreeksvergelijkingen en patroon
matching in regels, veldsplitsing met FS en FPAT, record scheiden met
RS, reguliere expressie die overeenkomt met ~ en !~En gensub(), gsub(),
inhoudsopgave(), bij elkaar passen(), patsplit(), splitsen () en sub() ingebouwde functies negeren allemaal
geval bij het uitvoeren van reguliere expressiebewerkingen. NOTITIE: Array-subscripting is
niet aangetast. echter, de een soort() en assortiment() functies worden beïnvloed.
Dus als NEGEER ZAAK is niet gelijk aan nul, /aB/ komt overeen met alle snaren
"ab", "aB", "Ab" en "AB". Zoals bij alle AWK-variabelen is de beginwaarde van
NEGEER ZAAK is nul, dus alle reguliere expressie- en tekenreeksbewerkingen zijn dat ook
normaal gesproken hoofdlettergevoelig.

LINT Biedt dynamische controle over de --lint optie vanuit een AWK-programma.
Wanneer waar, gapen drukt pluiswaarschuwingen af. Wanneer het vals is, is dat niet het geval. Wanneer toegewezen
de tekenreekswaarde "fataal", lintwaarschuwingen worden fatale fouten, precies zoals
--lint=fataal. Elke andere echte waarde drukt alleen waarschuwingen af.

NF Het aantal velden in de huidige invoerrecord.

NR Het totale aantal invoerrecords dat tot nu toe is gezien.

OFMT Het uitvoerformaat voor getallen, "%.6g", standaard.

FSO Het uitvoerveldscheidingsteken, standaard een spatie.

ORS Het uitvoerrecordscheidingsteken, standaard een nieuwe regel.

VORIGE De werkprecisie van drijvende-kommagetallen met willekeurige precisie, 53 bij
standaard.

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

PROCINFO["egid"] De waarde van de wegwezen(2) systeemoproep.

PROCINFO["strftime"]
De standaard tijdnotatietekenreeks voor strftime ().

PROCINFO["euid"] De waarde van de getuid(2) systeemoproep.

PROCINFO["FS"] "FS" als veldsplitsing met FS is van kracht, "FPAT" if
veldsplitsing met FPAT van kracht is, of "VELDBREEDTE"
als veldsplitsing met VELDBREEDTE van kracht is.

PROCINFO["identificatoren"]
Een subarray, geïndexeerd op de namen van alle gebruikte identificatiegegevens
in de tekst van het AWK-programma. De waarden geven aan wat
gapen kent de identificaties nadat het klaar is
het ontleden van het programma; zij zijn niet bijgewerkt terwijl de
programma loopt. Voor elke identificatie wordt de waarde van de
element is een van de volgende:

"array"
De identificatie is een array.

"ingebouwd"
De identificatie is een ingebouwde functie.

"verlenging"
De identificatie is een uitbreidingsfunctie die wordt geladen via
@laden or -l.

"scalair"
De identificatie is scalair.

"niet getypt"
De ID is ongetypeerd (kan worden gebruikt als een
scalair of array, gapen weet het nog niet).

"gebruiker" De identificatie is een door de gebruiker gedefinieerde functie.

PROCINFO["gid"] De waarde van de word wakker(2) systeemoproep.

PROCINFO["pgrpid"] De procesgroep-ID van het huidige proces.

PROCINFO["pid"] De proces-ID van het huidige proces.

PROCINFO["ppid"] De bovenliggende proces-ID van het huidige proces.

PROCINFO["uid"] De waarde van de gek(2) systeemoproep.

PROCINFO["gesorteerd_in"]
Als dit element bestaat in PROCINFO, en dan de waarde ervan
bepaalt de volgorde waarin array-elementen worden doorlopen
in For lussen. Ondersteunde waarden zijn "@ind_str_asc",
"@ind_num_asc", "@val_type_asc", "@val_str_asc",
"@val_num_asc", "@ind_str_desc", "@ind_num_desc",
"@val_type_desc", "@val_str_desc", "@val_num_desc" en
"@ongesorteerd". De waarde kan ook de naam van een willekeurig bestand zijn
vergelijkingsfunctie als volgt gedefinieerd:

functie cmp_func(i1, v1, i2, v2)

WAAR i1 en i2 zijn de indices, en v1 en v2 de
overeenkomstige waarden van de twee elementen die worden vergeleken.
Het moet een getal opleveren dat kleiner is dan, gelijk aan of groter
dan 0, afhankelijk van hoe de elementen van de array zijn
besteld worden.

PROCINFO["invoer", "READ_TIMEOUT"]
De time-out in milliseconden voor het lezen van gegevens van invoer,
WAAR invoer is een omleidingsreeks of een bestandsnaam. Een waarde
van nul of minder dan nul betekent geen time-out.

PROCINFO["mpfr_versie"]
De versie van de GNU MPFR-bibliotheek die wordt gebruikt voor willekeurig
ondersteuning voor precisienummers in gapen. Deze vermelding is dat niet
aanwezig als MPFR-ondersteuning niet is gecompileerd gapen.

PROCINFO["gmp_versie"]
De versie van de GNU MP-bibliotheek die wordt gebruikt voor willekeurig
ondersteuning voor precisienummers in gapen. Deze vermelding is dat niet
aanwezig als MPFR-ondersteuning niet is gecompileerd gapen.

PROCINFO["prec_max"]
De maximale precisie ondersteund door de GNU MPFR-bibliotheek
voor drijvende-kommagetallen met willekeurige precisie. Dit
entry is niet aanwezig als MPFR-ondersteuning niet is gecompileerd
gapen.

PROCINFO["prec_min"]
De minimale precisie die is toegestaan ​​door de GNU MPFR-bibliotheek voor
drijvende-kommagetallen met willekeurige precisie. Deze inzending is
niet aanwezig als MPFR-ondersteuning niet is gecompileerd gapen.

PROCINFO["api_major"]
De hoofdversie van de extensie-API. Deze vermelding is dat niet
aanwezig als het laden van dynamische extensies niet beschikbaar is.

PROCINFO["api_minor"]
De secundaire versie van de extensie-API. Deze vermelding is dat niet
aanwezig als het laden van dynamische extensies niet beschikbaar is.

PROCINFO["versie"] de versie van gapen.

RONDEMODUS De afrondingsmodus die moet worden gebruikt voor willekeurige precisieberekeningen op getallen, door
verzuim "N" (IEEE-754 roundTiesToEven-modus). De geaccepteerde waarden zijn "N" or
"N" voor roundTiesToEven, "U" or "u" voor rondeNaarPositief, "D" or "d" For
rondeNaarNegatief, "Z" or "z" voor roundTowardZero, en als uw versie van
GNU MPFR-bibliotheek ondersteunt dit, "A" or "A" voor roundTiesToAway.

RS Het invoerrecordscheidingsteken, standaard een nieuwe regel.

RT De recordterminator. Gaaf sets RT naar de invoertekst die overeenkomt met de
teken of reguliere expressie gespecificeerd door RS.

RSTART De index van het eerste teken komt overeen met bij elkaar passen(); 0 indien geen overeenkomst. (Dit
impliceert dat karakterindexen beginnen bij één.)

RLENGTE De lengte van de string komt overeen met bij elkaar passen(); -1 indien geen match.

SUBSEP Het teken dat wordt gebruikt om meerdere subscripts in array-elementen te scheiden, door
verzuim "\034".

SYMTAB Een array waarvan de indices de namen zijn van alle momenteel gedefinieerde globale variabelen
en arrays in het programma. De array kan worden gebruikt voor indirecte leestoegang
of schrijf de waarde van een variabele:

foo = 5
SYMTAB["foe"] = 4
print foo # prints 4

De isarray() functie kan worden gebruikt om te testen of een element in SYMTAB is een
reeks. U mag geen gebruik maken van de verwijderen verklaring met de SYMTAB matrix.

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

arrays
Arrays worden gesubscripteerd met een uitdrukking tussen vierkante haakjes ([ en ]). Als de
expressie is een expressielijst (uitdrukken, uitdrukken ...) dan is het array-subscript een string
bestaande uit de aaneenschakeling van de (tekenreeks)waarde van elke expressie, gescheiden door de
waarde van de SUBSEP variabel. Deze faciliteit wordt gebruikt om meervoudige afmetingen te simuleren
arrays. Bijvoorbeeld:

i = "A"; j = "B"; k = "C"
x[ik, j, k] = "Hallo, wereld\n"

wijst de string toe "Hallo, wereld\n" naar het element van de array x die wordt geïndexeerd door de
snaar "A\034B\034C". Alle arrays in AWK zijn associatief, dwz geïndexeerd op stringwaarden.

De speciale operator in kan worden gebruikt om te testen of een array een index heeft die bestaat uit a
bijzondere waarde:

if (waarde in reeks)
print array[val]

Als de array meerdere subscripts heeft, gebruikt u (En, j) in reeks.

De in construct kan ook worden gebruikt in a For lus om alle elementen van een te herhalen
reeks. echter, de (En, j) in reeks construct werkt alleen in tests, niet in For lussen.

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

gapen ondersteunt echte multidimensionale arrays. Het is niet vereist dat dergelijke arrays dat zijn
``rechthoekig'' zoals in C of C++. Bijvoorbeeld:

een[1] = 5
een[2][1] = 6
een[2][2] = 7

NOTITIE: Misschien moet je het vertellen gapen dat een array-element in werkelijkheid een subarray is om te gebruiken
het waar gapen verwacht een array (zoals in het tweede argument to splitsen ()). Je kunt het doen
dit door een element in de subarray te maken en dit vervolgens te verwijderen met de verwijderen
verklaring.

Veranderlijk Typen En Camper ombouw
Variabelen en velden kunnen (zwevende-komma)getallen zijn, of strings, of beide. Hoe de waarde
van een variabele wordt geïnterpreteerd, hangt af van de context. Indien gebruikt in een numerieke uitdrukking,
het wordt behandeld als een getal; als het als string wordt gebruikt, wordt het als een string behandeld.

Om te forceren dat een variabele als een getal wordt behandeld, voegt u er 0 aan toe; om te dwingen dat het wordt behandeld als een
string, voeg deze samen met de null-string.

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

Wanneer een string moet worden geconverteerd naar een getal, wordt de conversie uitgevoerd met behulp van
strtod(3). Een getal wordt geconverteerd naar een tekenreeks door de waarde van te gebruiken CONVFMT als formaat
tekenreeks voor sprint(3), met de numerieke waarde van de variabele als argument. Echter,
ook al zijn alle getallen in AWK drijvende komma, integrale waarden zijn dat wel altijd omgezet als
gehele getallen. Dus gegeven

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

de variabele b heeft een tekenreekswaarde van "12" en niet "12.00".

NOTITIE: Bij gebruik in POSIX-modus (zoals bij de --positief optie), pas op voor de landinstelling
instellingen kunnen de manier beïnvloeden waarop decimale getallen worden behandeld: het decimale scheidingsteken van
de nummers waarnaar u invoert gapen moet voldoen aan wat uw landinstelling zou verwachten, of het nu gaat om een
komma (,) of een punt (.).

Gaaf voert vergelijkingen als volgt uit: Als twee variabelen numeriek zijn, worden ze vergeleken
numeriek. Als de ene waarde numeriek is en de andere een tekenreekswaarde heeft die 'numeriek' is
string”, dan worden de vergelijkingen ook numeriek uitgevoerd. Anders is de numerieke waarde
omgezet naar een string en er wordt een stringvergelijking uitgevoerd. Er worden twee snaren vergeleken, van
natuurlijk, als snaren.

Houd er rekening mee dat tekenreeksconstanten, zoals "57", Zijn niet numerieke strings, ze zijn string
constanten. Het idee van “numerieke reeks” is alleen van toepassing op velden, getlijn invoer, BESTANDSNAAM,
ARGV elementen, MILIEU elementen en de elementen van een array gemaakt door splitsen () or
patsplit() dat zijn numerieke reeksen. Het basisidee is dat gebruiker invoer, en enige gebruiker
invoer, die er numeriek uitziet, moet op die manier worden behandeld.

Octaal en Hexadecimaal constanten
U kunt octale en hexadecimale constanten in C-stijl gebruiken in de broncode van uw AWK-programma. Voor
bijvoorbeeld de octale waarde 011 is gelijk aan decimaal 9en de hexadecimale waarde 0x11 is
gelijk aan decimaal 17.

Draad constanten
Tekenreeksconstanten in AWK zijn reeksen tekens tussen dubbele aanhalingstekens (zoals
"waarde"). Binnen de marges, zeker ontsnappen sequenties worden erkend, zoals in C. Dit zijn:

\\ Een letterlijke terugslag.

\a Het ‘alert’-karakter; meestal het ASCII BEL-teken.

\b Backspace.

\f Formulierinvoer.

\n Nieuwe lijn.

\r Vervoer terug.

\t Horizontaal tabblad.

\v Verticaal tabblad.

\xhex cijfers
Het teken dat wordt weergegeven door de reeks hexadecimale cijfers na de \x. Als
in ISO C worden alle volgende hexadecimale cijfers beschouwd als onderdeel van de ontsnapping
reeks. (Deze functie zou ons iets moeten vertellen over taalontwerp door
commissie.) Bijv. "\x1B" is het ASCII ESC-teken (escape).

\ddd Het teken dat wordt weergegeven door de reeks octale cijfers van 1, 2 of 3 cijfers. Bijvoorbeeld,
"\033" is het ASCII ESC-teken (escape).

\c Het letterlijke karakter c.

De escape-reeksen kunnen ook worden gebruikt binnen constante reguliere expressies (bijv.
/[ \t\f\n\r\v]/ komt overeen met witruimtetekens).

In de compatibiliteitsmodus ontsnappen de tekens die worden weergegeven door octaal en hexadecimaal
reeksen worden letterlijk behandeld wanneer ze worden gebruikt in reguliere expressie-constanten. Dus, /a\52b/
is gelijk aan /a\*b/.

PATRONEN EN ACTIES


AWK is een lijngeoriënteerde taal. Het patroon komt eerst, en dan de actie. Actie
verklaringen zijn bijgevoegd { en }. Ofwel ontbreekt het patroon, ofwel de actie
ontbreken, maar uiteraard niet beide. Als het patroon ontbreekt, wordt de actie uitgevoerd
voor elk afzonderlijk invoerrecord. Een ontbrekende actie is gelijk aan

{ print }

waarmee het volledige record wordt afgedrukt.

Opmerkingen beginnen met de # teken en ga door tot het einde van de regel. Lege regels
kan worden gebruikt om verklaringen van elkaar te scheiden. Normaal gesproken eindigt een statement met een nieuwe regel, maar
dit is niet het geval voor regels die eindigen op een komma, {, ?, :, &&of ||. Regels die eindigen op do
or anders hun verklaringen worden ook automatisch voortgezet op de volgende regel. In
in andere gevallen kan een regel worden voortgezet door deze te beëindigen met een “\”, in welk geval de nieuwe regel dat is
buiten beschouwing gelaten.

Er kunnen meerdere uitspraken op één regel worden geplaatst door ze te scheiden met een “;”. Dit heeft betrekking op
zowel de uitspraken binnen het actiegedeelte van een patroon-actiepaar (het gebruikelijke geval), en
naar de patroon-actieverklaringen zelf.

Patronen
AWK-patronen kunnen een van de volgende zijn:

BEGINNEN
EINDE
BEGINBESTAND
EINDBESTAND
/regelmatig uitdrukking/
relationele uitdrukking
patroon && patroon
patroon || patroon
patroon ? patroon : patroon
(patroon)
! patroon
patroon1, patroon2

BEGINNEN en EINDE zijn twee speciale soorten patronen die niet aan de invoer worden getoetst.
De actiedelen van allemaal BEGINNEN patronen worden samengevoegd alsof alle uitspraken dat waren geweest
in één keer geschreven BEGINNEN regel. Ze worden uitgevoerd voordat de invoer wordt gelezen.
Op dezelfde manier, alle EINDE regels worden samengevoegd en uitgevoerd wanneer alle invoer is uitgeput (of
wanneer een afrit verklaring wordt uitgevoerd). BEGINNEN en EINDE patronen kunnen niet met andere worden gecombineerd
patronen in patroonuitdrukkingen. BEGINNEN en EINDE patronen mogen geen ontbrekende actieonderdelen bevatten.

BEGINBESTAND en EINDBESTAND zijn extra speciale patronen waarvan de lichamen eerder zijn uitgevoerd
het lezen van de eerste record van elk opdrachtregelinvoerbestand en na het lezen van de laatste record
van elk bestand. Binnen in de BEGINBESTAND regel, de waarde van FOUT zal de lege string zijn als
het bestand is succesvol geopend. Anders is er een probleem met het bestand en de
code moet gebruiken volgend bestand om het over te slaan. Als dat niet wordt gedaan, gapen veroorzaakt zijn gebruikelijke fatale gevolgen
fout voor bestanden die niet kunnen worden geopend.

Voor /regelmatig uitdrukking/ patronen, wordt voor elke invoer de bijbehorende instructie uitgevoerd
record dat overeenkomt met de reguliere expressie. Reguliere expressies zijn hetzelfde als die in
egr(1), en worden hieronder samengevat.

A relationele uitdrukking mag een van de operators gebruiken die hieronder in het gedeelte over worden gedefinieerd
acties. Deze testen doorgaans of bepaalde velden overeenkomen met bepaalde reguliere expressies.

De &&, || en ! operatoren zijn respectievelijk logische AND, logische OR en logische NOT,
zoals in C. Ze evalueren kortsluiting, ook zoals in C, en worden gebruikt om meer te combineren
primitieve patroonuitdrukkingen. Zoals in de meeste talen kunnen haakjes worden gebruikt om te wijzigen
de volgorde van evaluatie.

De ?: operator is als dezelfde operator in C. Als het eerste patroon waar is, dan is de
het voor het testen gebruikte patroon is het tweede patroon, anders is het het derde. Slechts één van
het tweede en derde patroon worden geëvalueerd.

De patroon1, patroon2 vorm van een uitdrukking heet a reeks patroon. Het komt overeen met alles
voer records in die beginnen met een record dat overeenkomt patroon1, en doorgaan tot een record
dat komt overeen patroon2, inclusief. Het kan niet worden gecombineerd met enig ander soort patroon
expressie.

Normaal Uitdrukkingen
Reguliere expressies zijn van het uitgebreide type dat wordt aangetroffen in egr. Ze zijn samengesteld uit karakters
als volgt:

c Komt overeen met het niet-metakarakter c.

\c Komt overeen met het letterlijke karakter c.

. Past bij elk karakter waaronder nieuwe lijn.

^ Komt overeen met het begin van een tekenreeks.

$ Komt overeen met het einde van een tekenreeks.

[abc...] Een karakterlijst: komt overeen met elk van de karakters abc.... U kunt een
reeks tekens door ze van elkaar te scheiden met een streepje.

[^abc...] Een lijst met genegeerde tekens: komt overeen met elk teken behalve abc....

r1|r2 Afwisseling: komt overeen met een van beide r1 or r2.

r1r2 Aaneenschakeling: overeenkomsten r1, En vervolgens 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 tussen accolades duiden een aan interval uitdrukking. Als dat zo is
één getal tussen accolades, de voorgaande reguliere expressie r wordt herhaald n
keer. Als er twee getallen zijn gescheiden door een komma, r wordt herhaald n naar m
keer. Als er één getal is gevolgd door een komma, dan r wordt tenminste herhaald
n tijden.

\y Komt overeen met de lege tekenreeks aan het begin of het einde van een woord.

\B Komt overeen met de lege tekenreeks binnen een woord.

\< Komt overeen met de lege tekenreeks aan het begin van een woord.

\> Komt overeen met de lege tekenreeks aan het einde van een woord.

\s Komt overeen met elk witruimteteken.

\S Komt overeen met elk niet-witruimteteken.

\w Komt overeen met elk teken dat deel uitmaakt van een woord (letter, cijfer of onderstrepingsteken).

\W Komt overeen met elk teken dat geen woordbestanddeel is.

\` Komt overeen met de lege tekenreeks aan het begin van een buffer (tekenreeks).

\' Komt overeen met de lege tekenreeks aan het einde van een buffer.

De escape-reeksen die geldig zijn in stringconstanten (zie Draad constanten) zijn ook
geldig in reguliere expressies.

Karakter klassen zijn een functie geïntroduceerd in de POSIX-standaard. Een karakterklasse is a
speciale notatie voor het beschrijven van lijsten met tekens die een specifiek attribuut hebben, maar
waarbij de werkelijke karakters zelf kunnen variëren van land tot land en/of van land tot land
tekenset naar tekenset. Bijvoorbeeld het idee van wat een alfabet is
karakter verschilt in de VS en in Frankrijk.

Een karakterklasse is alleen geldig in een reguliere expressie binnen de haakjes van een personage
lijst. Karakterklassen bestaan ​​uit [:, een sleutelwoord dat de klasse aanduidt, en :]. De
tekenklassen gedefinieerd door de POSIX-standaard zijn:

[:alum:] Alfanumerieke tekens.

[:alfa:] Alfabetische tekens.

[:blanco:] Spatie- of tabtekens.

[:control:] Controlekarakters.

[:cijfer:] Numerieke tekens.

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

[:lager:] Alfabetische tekens in kleine letters.

[:afdrukken:] Afdrukbare tekens (tekens die geen controletekens zijn.)

[:punt:] Leestekens (tekens die geen letters, cijfers, controletekens zijn).
tekens of spaties).

[:ruimte:] Spaties (zoals spatie, tab en formfeed, om er maar een paar te noemen).

[:bovenste:] Alfabetische tekens in hoofdletters.

[:xcijfer:] Tekens die hexadecimale cijfers zijn.

Vóór de POSIX-standaard had u bijvoorbeeld alfanumerieke tekens nodig
moest schrijven /[A-Za-z0-9]/. Als uw tekenset andere alfabetische tekens bevat,
dit zou niet overeenkomen, en als je tekenset anders zou zijn verzameld dan ASCII, dit
komt mogelijk niet eens overeen met de alfanumerieke ASCII-tekens. Met de POSIX-tekenklassen,
je kan schrijven /[[:alum:]]/, en dit komt overeen met de alfabetische en numerieke tekens in
jouw karakterset, wat het ook is.

Er kunnen twee extra speciale reeksen in karakterlijsten verschijnen. Deze zijn van toepassing op niet-ASCII
tekensets, die enkele symbolen kunnen bevatten (de zogenaamde verzamelen geeft je de mogelijkheid) dat zijn
vertegenwoordigd met meer dan één karakter, evenals meerdere karakters die dat wel zijn
equivalent voor verzamelenof sorteerdoeleinden. (In het Frans bijvoorbeeld: een gewone “e” en een a
“`” met een ernstig accent zijn gelijkwaardig.)

Symbolen verzamelen
Een verzamelsymbool is een verzamelelement dat uit meerdere tekens bestaat [. en .].
Als bijvoorbeeld ch is dus een verzamelelement [[.ch.]] is een reguliere expressie
dat overeenkomt met dit verzamelelement, while [ch] is een reguliere expressie die
wedstrijden ook niet c or h.

Equivalentieklassen
Een equivalentieklasse is een landspecifieke naam voor een lijst met tekens die dat wel zijn
equivalent. De naam staat erbij [= en =]. Bijvoorbeeld de naam e kan zijn
gebruikt om alle “e”, “´” en “`” weer te geven. In dit geval, [[=e=]] is een gewone
uitdrukking die overeenkomt met een van e, of e`.

Deze functies zijn zeer waardevol in niet-Engelstalige landen. De bibliotheek functioneert
dat gapen gebruikt voor het matchen van reguliere expressies herkent momenteel alleen het POSIX-teken
klassen; ze herkennen geen verzamelsymbolen of equivalentieklassen.

De \y, \B, \<, \>, \s, \S, \w, \W, \` en \' exploitanten zijn specifiek voor gapen; zij zijn
uitbreidingen gebaseerd op faciliteiten in de GNU reguliere expressiebibliotheken.

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

Geen opties
In het standaardgeval gapen biedt alle faciliteiten van POSIX reguliere expressies
en de GNU reguliere expressie-operatoren die hierboven zijn beschreven.

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

--traditioneel
Traditioneel UNIX awk reguliere expressies komen overeen. De GNU-operators niet
speciale en intervalexpressies zijn niet beschikbaar. Karakters beschreven door octaal
en hexadecimale ontsnappingsreeksen worden letterlijk behandeld, zelfs als ze vertegenwoordigen
metatekens voor reguliere expressies.

--herinterval
Sta intervalexpressies toe in reguliere expressies, zelfs als --traditioneel is
verstrekt.

Acties
Actieverklaringen staan ​​tussen accolades, { en }. Actieverklaringen bestaan ​​uit het gebruikelijke
toewijzings-, voorwaardelijke en lus-instructies die in de meeste talen voorkomen. De exploitanten,
control-instructies, en de beschikbare input/output-instructies hebben het patroon van die in C.

Operators
De operatoren in AWK, in volgorde van afnemende prioriteit, zijn:

(...) Groepering

$ Veldreferentie.

++ -- Verhogen en verlagen, zowel voor- als achtervoegsel.

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

+ - ! Unaire plus, unaire min en logische negatie.

* / % Vermenigvuldigen, delen en modulus.

+ - Optellen en aftrekken.

ruimte Tekenreeksaaneenschakeling.

| |& Doorgesluisde I/O voor getlijn, print en printf.

< > <= >= != ==
De reguliere relationele operatoren.

~ !~ Reguliere expressie-overeenkomst, ontkende overeenkomst. NOTITIE: Gebruik geen constante reguliere
uitdrukking (/foe/) aan de linkerkant van a ~ or !~. Gebruik er slechts één op de
rechterzijde. De uitdrukking /foe/ ~ exp heeft dezelfde betekenis als (($0 ~
/foe/) ~ exp)​ Dit is meestal niet wat je wilt.

in Array-lidmaatschap.

&& Logisch EN.

|| Logische OF.

?: De C-voorwaardelijke expressie. Dit heeft de vorm uitdr1 ? uitdr2 : uitdr3. Indien
uitdr1 waar is, is de waarde van de uitdrukking uitdr2, anders is het uitdr3.
slechts één van uitdr2 en uitdr3 wordt geëvalueerd.

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

Controle verklaringen
De controleverklaringen zijn als volgt:

if (voorwaarde) verklaring [ anders verklaring ]
en (voorwaarde) verklaring
do verklaring en (voorwaarde)
For (uitdr1; uitdr2; uitdr3) verklaring
For (var in reeks) verklaring
breken
voortzetten
verwijderen reeks[index]
verwijderen reeks
afrit [ uitdrukking ]
{ verklaringen }
schakelaar (uitdrukking) {
geval waarde|regex : verklaring
...
[ default: verklaring ]
}

I / O verklaringen
De invoer/uitvoer-instructies zijn als volgt:

dichtbij(filet [, hoe]) Bestand, pipe of co-proces sluiten. De optionele hoe zou alleen moeten zijn
gebruikt bij het afsluiten van één uiteinde van een tweerichtingsleiding naar een co-proces. Het
moet ook een tekenreekswaarde zijn "naar" or "van".

getlijn Zet de $0 vanaf het volgende invoerrecord; set NF, NR, FNR, RT.

getlijn <filet Zet de $0 vanaf de volgende record van filet; set NF, RT.

getlijn var Zet de var vanaf het volgende invoerrecord; set NR, FNR, RT.

getlijn var <filet Zet de var vanaf de volgende record van filet, RT.

commando | getlijn [var]
lopen commando de uitvoer naar binnen leiden $0 or var, zoals hierboven, en
RT.

commando |& getlijn [var]
lopen commando als een co-proces waar de uitvoer naar toe wordt geleid $0 or var,
zoals hierboven, en RT. Co-processen zijn a gapen verlenging. (commando wel
ook een stopcontact zijn. Zie de subsectie special Dien in namen, onderstaand.)

volgende Stop met het verwerken van het huidige invoerrecord. Het volgende invoerrecord is
lezen en verwerken begint opnieuw met het eerste patroon in de AWK
programma. Bij het bereiken van het einde van de invoergegevens, gapen voert enige uit
EINDE reglement).

volgend bestand Stop met het verwerken van het huidige invoerbestand. Het volgende invoerrecord wordt gelezen
komt uit 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. Bij het bereiken van het einde van de invoergegevens, gapen
voert enige uit EINDE reglement).

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

print expr-lijst Uitdrukkingen afdrukken. Elke expressie wordt gescheiden door de waarde van
FSO. Het uitvoerrecord wordt beëindigd met de waarde van ORS.

print expr-lijst >filet Uitdrukkingen afdrukken op filet. Elke expressie wordt gescheiden door de
waarde van FSO. Het uitvoerrecord wordt beëindigd met de waarde van
ORS.

printf FMT, expr-lijst Formaat en afdrukken. Zien De printf StatementHieronder.

printf FMT, expr-lijst >filet
Opmaken en afdrukken filet.

systeem(cmd-regel) Voer het commando uit cmd-regelen retourneer de afsluitstatus. (Dit zou
niet beschikbaar op niet-POSIX-systemen.)

spoelen([filet]) Spoel alle buffers weg die zijn gekoppeld aan het geopende uitvoerbestand of de geopende pijp filet.
If filet ontbreekt of als het de nulreeks is, spoel dan alles open
uitvoerbestanden en leidingen.

Er zijn aanvullende uitvoeromleidingen toegestaan print en printf.

print ... >> filet
Voegt uitvoer toe aan de filet.

print ... | commando
Schrijft op een pijp.

print ... |& commando
Verzendt gegevens naar een co-proces of socket. (Zie ook de onderafdeling special Dien in namen,
hieronder.)

De getlijn opdracht retourneert 1 bij succes, 0 bij einde bestand en -1 bij een fout. Op een
fout, FOUT is ingesteld op een string die het probleem beschrijft.

NOTITIE: Als een tweerichtingsaansluiting niet wordt geopend, wordt er teruggestuurd naar een niet-fatale fout
de belfunctie. Als u een pijp, co-proces of mof gebruikt getlijn, Of print or
printf binnen een lus, jij Dan moet je . dichtbij() om nieuwe exemplaren van de opdracht of te maken
stopcontact. AWK sluit leidingen, stopcontacten of co-processen niet automatisch af bij retour
EOF.

De printf Statement
De AWK-versies van de printf verklaring en sprint() functie (zie hieronder) accepteer de
volgende conversiespecificatieformaten:

%c Eén enkel karakter. Als het argument wordt gebruikt voor %c numeriek is, wordt het behandeld als a
karakter en gedrukt. Anders wordt aangenomen dat het argument een string is, en de
alleen het eerste teken van die string wordt afgedrukt.

%d, %i Een decimaal getal (het gehele deel).

%e, %E Een drijvende-kommagetal van de vorm [-]d.dddddde[+-]dd. De %E formaat gebruikt E
in plaats van e.

%f, %F Een drijvende-kommagetal van de vorm [-]ddd.dddddd. Als de systeembibliotheek dit ondersteunt
het, %F is ook beschikbaar. Dit is zoals %f, maar gebruikt hoofdletters voor speciaal
waarden “geen getal” en “oneindig”. Als %F is niet beschikbaar, gapen toepassingen %f.

%g, %G Te gebruiken %e or %f conversie, welke korter is, met niet-significante nullen
onderdrukt. De %G formaat gebruikt %E in plaats van %e.

%o Een octaal getal zonder teken (ook een geheel getal).

%u Een decimaal getal zonder teken (opnieuw een geheel getal).

%s Een tekenreeks.

%x, %X Een hexadecimaal getal zonder teken (een geheel getal). De %X formaat gebruikt ABCDEF in plaats van
abcdef.

%% Een % karakter; er wordt geen argument omgezet.

Optioneel kunnen er aanvullende parameters tussen de % en de controlebrief:

tellen$ Gebruik de tellen'e argument op dit punt in de opmaak. Dit heet een
positie- specificeerder en is voornamelijk bedoeld voor gebruik in vertaalde versies van
formatstrings, niet in de originele tekst van een AWK-programma. Het is een gapen
verlenging.

- De uitdrukking moet binnen het veld links uitgelijnd zijn.

ruimte Voor numerieke conversies plaatst u positieve waarden vooraf met een spatie, en negatieve waarden
met een minteken.

+ Het plusteken, gebruikt vóór de breedtemodificator (zie hieronder), zegt dat er altijd a moet worden opgegeven
teken voor numerieke conversies, zelfs als de te formatteren gegevens positief zijn. De +
overschrijft de ruimtemodificator.

# Gebruik voor bepaalde controleletters een ‘alternatieve vorm’. Voor %o, leveren een leidende
nul. Voor %x en %X, leveren een leidende 0x or 0X voor een resultaat dat niet nul is. Voor %e, %E,
%f en %F, bevat het resultaat altijd een decimaalteken. Voor %g en %G, achterblijvend
Nullen worden niet uit het resultaat verwijderd.

0 Een leidende 0 (nul) fungeert als een vlag, die aangeeft dat de uitvoer moet worden opgevuld
nullen in plaats van spaties. Dit geldt alleen voor de numerieke uitvoerformaten. Dit
flag heeft alleen effect als de veldbreedte breder is dan de af te drukken waarde.

' Een enkel aanhalingsteken geeft instructies gapen om het scheidingsteken voor duizendtallen van de landinstelling in te voegen
teken om te zetten in decimale getallen, en om ook de decimale punt van de landinstelling te gebruiken
karakter met drijvende-kommaformaten. Dit vereist correcte locale-ondersteuning in het
C-bibliotheek en in de definitie van de huidige landinstelling.

Breedte Het veld moet tot deze breedte worden opgevuld. Het veld is normaal gesproken opgevuld met
ruimtes. Met de 0 vlag, deze is opgevuld met nullen.

.vorige Een getal dat de nauwkeurigheid specificeert die bij het afdrukken moet worden gebruikt. Voor de %e, %E, %f en
%F, formaten, dit specificeert het aantal cijfers dat u rechts ervan wilt afdrukken
de komma. Voor de %g en %G formaten specificeert het het maximale aantal
significante cijfers. Voor de %d, %i, %o, %u, %x en %X formaten, specificeert het de
minimaal aantal cijfers om af te drukken. Voor %s, specificeert het het maximale aantal
tekens uit de string die moet worden afgedrukt.

De dynamiek Breedte en vorige mogelijkheden van de ISO C printf () routines worden ondersteund. A *
in plaats van ofwel de Breedte or vorige specificaties zorgen ervoor dat hun waarden worden overgenomen
de argumentenlijst printf or sprint(). Een positionele specificatie gebruiken met een dynamiek
breedte of precisie, lever de tellen$ na de * in de formaatreeks. Bijvoorbeeld,
"%3$*2$.*1$s".

special Dien in namen
Wanneer u I/O-omleiding uitvoert vanaf een van beide print or printf in een bestand, of via getlijn een
bestand gapen herkent intern bepaalde speciale bestandsnamen. Deze bestandsnamen geven toegang
om bestandsdescriptors te openen die zijn geërfd van gapen's ouderproces (meestal de shell). Deze
bestandsnamen kunnen ook op de opdrachtregel worden gebruikt om gegevensbestanden een naam te geven. De bestandsnamen zijn:

- De standaardinvoer.

/dev/stdin De standaardinvoer.

/dev/stdout De standaarduitvoer.

/dev/stderr De standaardfoutuitvoer.

/dev/fd/n Het bestand dat is gekoppeld aan de geopende bestandsdescriptor n.

Deze zijn vooral handig bij foutmeldingen. Bijvoorbeeld:

print "U blies het!" > "/dev/stderr"

terwijl je anders zou moeten gebruiken

print "U blies het!" | "kat 1>&2"

De volgende speciale bestandsnamen kunnen worden gebruikt met de |& co-procesoperator voor het maken
TCP/IP-netwerkverbindingen:

/inet/tcp/lpoort/roos/rapport
/inet4/tcp/lpoort/roos/rapport
/inet6/tcp/lpoort/roos/rapport
Bestanden voor een TCP/IP-verbinding op de lokale poort lpoort naar een externe host roos op afstandsbediening
port rapport. Gebruik een poort van 0 om het systeem een ​​poort te laten kiezen. Gebruik /inet4 kracht
een IPv4-verbinding, en /inet6 om een ​​IPv6-verbinding te forceren. Vlak /inet gebruikt
systeemstandaard (hoogstwaarschijnlijk IPv4).

/inet/udp/lpoort/roos/rapport
/inet4/udp/lpoort/roos/rapport
/inet6/udp/lpoort/roos/rapport
Hetzelfde, maar gebruik UDP/IP in plaats van TCP/IP.

Numerieke Functies
AWK heeft de volgende ingebouwde rekenfuncties:

atan2(y, x) Geef de boogtangens van y / x in radialen.

cos (uitdrukken) Geef de cosinus van uitdrukken, dat is in radialen.

exp (uitdrukken) De exponentiële functie.

int(uitdrukken) Afkappen tot geheel getal.

logboek(uitdrukken) De natuurlijke logaritmefunctie.

rand() Retourneer een willekeurig getal N, tussen 0 en 1, zodat 0 ≤ N <1.

zonde(uitdrukken) Geef de sinus terug van uitdrukken, dat is in radialen.

kwark(uitdrukken) Retourneert de vierkantswortel van uitdrukken.

srand ([uitdrukken]) Te gebruiken uitdrukken als het nieuwe zaad voor de generator van willekeurige getallen. Als Nee uitdrukken is
verstrekt, gebruik dan het tijdstip van de dag. Retourneer het vorige zaad voor de willekeurige
nummer generator.

Draad Functies
Gaaf heeft de volgende ingebouwde stringfuncties:

een soort(s [, d [, hoe] ]) Retourneert het aantal elementen in de bronarray s. Sorteer de
inhoud van s gebruik gapen's normale regels voor het vergelijken van waarden, en
vervang de indices van de gesorteerde waarden s met sequentiële
gehele getallen beginnend met 1. Als de optionele doelarray d is
gespecificeerd, eerste duplicaat s in den sorteer vervolgens d, verlaat de
indices van de bronarray s onveranderd. De optionele tekenreeks hoe
regelt de richting en de vergelijkingsmodus. Geldige waarden voor
hoe waarvoor een van de tekenreeksen geldig is PROCINFO["gesorteerd_in"]. Het
kan ook de naam zijn van een door de gebruiker gedefinieerde vergelijkingsfunctie als
beschreven in PROCINFO["gesorteerd_in"].

assortiment(s [, d [, hoe] ])
Retourneert het aantal elementen in de bronarray s. Het gedrag
is hetzelfde als dat van een soort(), behalve dat de array index zijn
gebruikt voor het sorteren, niet de arraywaarden. Als u klaar bent, is de array
numeriek geïndexeerd en de waarden zijn die van het origineel
indexen. De oorspronkelijke waarden gaan verloren; dus zorg voor een tweede
array als u het origineel wilt behouden. Het doel van de
optionele tekenreeks hoe is hetzelfde als beschreven in een soort() bovenstaand.

gensub(r, s, h [, t]) Zoek de doelreeks t voor overeenkomsten van de reguliere expressie
r. Indien h is een string die begint met g or Gen vervang vervolgens alles
wedstrijden van r Met s. Anders, h is een getal dat aangeeft welke
wedstrijd van r vervangen. Als t niet meegeleverd, gebruiken $0 gebruiken.
Binnen de vervangende tekst s, de reeks \n, Waar n is een cijfer
van 1 tot en met 9, kan worden gebruikt om alleen de tekst aan te geven die overeenkomt
de n'de subexpressie tussen haakjes. De reeks \0 vertegenwoordigt
de volledige overeenkomende tekst, net als het teken &. anders sub()
en gsub(), wordt de gewijzigde tekenreeks geretourneerd als resultaat van de
functie, en de oorspronkelijke doelreeks is niet gewijzigd.

gsub(r, s [, t]) Voor elke subtekenreeks die overeenkomt met de reguliere expressie r in de string
t, vervang de tekenreeks sen retourneer het nummer van
vervangingen. Als t niet meegeleverd, gebruiken $0. Een & in de
vervangende tekst wordt vervangen door de tekst die daadwerkelijk was
op elkaar afgestemd. Gebruik \& om een ​​letterlijke te krijgen &. (Dit moet getypt worden als
"\\&"; zien GAWK: effectief AWK Programming voor een uitgebreidere discussie
van de regels voor &'s en backslashes in de vervangende tekst van
sub(), gsub() en gensub().)

inhoudsopgave(s, t) Retourneert de index van de tekenreeks t in de string s, of 0 als t is niet
cadeau. (Dit houdt in dat karakterindexen bij één beginnen.) It
is een fatale fout waarvoor een regexp-constante moet worden gebruikt t.

lengte([s]) Retourneer de lengte van de tekenreeks s, of de lengte van $0 if s is niet
geleverd. Als een niet-standaard extensie, met een array-argument,
lengte() retourneert het aantal elementen in de array.

bij elkaar passen(s, r [, a]) Zet de positie terug in s waar de reguliere expressie r optreedt, of
0 indien r niet aanwezig is, en stel de waarden in van RSTART en RLENGTE.
Merk op dat de argumentvolgorde dezelfde is als voor de ~ telefoniste:
str ~ re. Als array a is voorzien, a wordt gewist en vervolgens elementen
1 door n zijn gevuld met de porties van s die overeenkomen met de
overeenkomstige subexpressie tussen haakjes in r. Het 0-de element
of a bevat het gedeelte van s geëvenaard door de gehele reguliere
uitdrukking r. Abonnementen a[n, "begin"] en a[n, "lengte"]
geef respectievelijk de startindex in de string en de lengte op,
van elke overeenkomende subtekenreeks.

patsplit(s, a [, r [, sept] ])
Splits de tekenreeks s in de array a en de array met scheidingstekens sept
op de reguliere expressie ren retourneer het aantal velden.
Elementwaarden zijn de delen van s dat paste r. De waarde van
september[i] is het scheidingsteken dat ervoor verscheen a[i+1]. Indien r
wordt weggelaten, FPAT wordt in plaats daarvan gebruikt. De arrays a en sept zijn
eerst opgeruimd. Het splitsen gedraagt ​​zich op dezelfde manier als het splitsen van velden
Met FPAT, hierboven omschreven.

splitsen (s, a [, r [, sept] ])
Splits de tekenreeks s in de array a en de array met scheidingstekens sept
op de reguliere expressie ren retourneer het aantal velden. Als
r wordt weggelaten, FS wordt in plaats daarvan gebruikt. De arrays a en sept zijn
eerst opgeruimd. september[i] is het veldscheidingsteken dat overeenkomt met r
tussen a[i] en a[i+1]. Indien r is een enkele spatie, dan leidend
witruimte erin s gaat naar het extra array-element september[0] en
de achterliggende witruimte gaat naar het extra array-element september[n],
WAAR n is de retourwaarde van splitsen (s, a, r, sept). Splitsen
gedraagt ​​zich identiek aan veldsplitsing, hierboven beschreven.

sprintf (fmt, expr-lijst) Print expr-lijst volgens fmten retourneert de resulterende tekenreeks.

strtonum(str) Onderzoeken stren retourneert de numerieke waarde ervan. Als str begint met een
leidend 0, behandel het als een octaal getal. Als str begint met een
leidend 0x or 0X, behandel het dan als een hexadecimaal getal. Anders,
neem aan dat het een decimaal getal is.

sub(r, s [, t]) Net als gsub(), maar vervang alleen de eerste overeenkomende subtekenreeks.

substr(s, i [, n]) Geef het hoogstens terug n-tekenreeks van s vanaf i. Indien n
is weggelaten, gebruik dan de rest van s.

verlagen(str) Retourneert een kopie van de tekenreeks str, met alle hoofdletters
in str vertaald naar hun corresponderende tegenhangers in kleine letters.
Niet-alfabetische tekens blijven ongewijzigd.

topper(str) Retourneert een kopie van de tekenreeks str, met alle kleine letters
in str vertaald naar de overeenkomstige tegenhangers in hoofdletters.
Niet-alfabetische tekens blijven ongewijzigd.

Gaaf is multibyte-bewust. Dit betekent dat inhoudsopgave(), lengte(), substr() en bij elkaar passen() All Het werk
in termen van karakters, niet in bytes.

Tijd Functies
Omdat een van de belangrijkste toepassingen van AWK-programma's het verwerken van logbestanden is die tijd bevatten
stempel informatie, gapen biedt de volgende functies voor het verkrijgen van tijdstempels en
het formatteren ervan.

mktijd(datumspec)
Draaien datumspec omgezet in een tijdstempel van hetzelfde formulier als geretourneerd door systeemtijd() en
het resultaat retourneren. De datumspec is een tekenreeks van het formulier YYYY MM DD HH MM SS[
Zomertijd]. De inhoud van de string bestaat uit zes of zeven cijfers
respectievelijk het volledige jaar inclusief eeuw, de maand van 1 tot 12, de dag van
de maand van 1 tot 31, het uur van de dag van 0 tot 23, de minuut van 0 tot
59, de tweede van 0 tot 60, en een optionele zomertijdvlag. De waarden
van deze aantallen hoeven niet binnen de gespecificeerde bereiken te liggen; bijvoorbeeld een uur
van -1 betekent 1 uur vóór middernacht. De Gregoriaanse kalender met oorsprong nul is
aangenomen, waarbij jaar 0 voorafgaat aan jaar 1 en jaar -1 voorafgaand aan jaar 0. De tijd is
Er wordt aangenomen dat deze zich in de lokale tijdzone bevindt. Als de zomertijdvlag positief is,
er wordt aangenomen dat de tijd zomertijd is; indien nul, wordt aangenomen dat de tijd gelijk is
standaardtijd zijn; en indien negatief (de standaard), mktijd() probeert vast te stellen
of de zomertijd op de opgegeven tijd van kracht is. Als datumspec
niet genoeg elementen bevat of als de resulterende tijd buiten bereik ligt,
mktijd() geeft -1 terug.

strftijd([formaat [, tijdstempel[, utc-vlag]]])
Formaat tijdstempel volgens de specificatie in formaat. Indien utc-vlag is
aanwezig is en niet nul of niet nul is, is het resultaat in UTC, anders is het resultaat
is in lokale tijd. De tijdstempel moet van dezelfde vorm zijn als geretourneerd door
systeemtijd(). Indien tijdstempel ontbreekt, wordt de huidige tijd van de dag gebruikt. Als formaat
ontbreekt, een standaardformaat dat gelijkwaardig is aan de uitvoer van gegevens(1) wordt gebruikt. De
standaardformaat is beschikbaar in PROCINFO["strftime"]. Zie de specificatie voor
de strftime () functie in ISO C voor de gegarandeerde formaatconversies
beschikbaar zijn.

systeemtijd() Retourneert de huidige tijd van de dag als het aantal seconden sinds het tijdperk
(1970-01-01 00:00:00 UTC op POSIX-systemen).

Beetje Manipulaties Functies
Gaaf levert de volgende bitmanipulatiefuncties. Ze werken door het omzetten van dubbele
precisie drijvende-kommawaarden tot uintmax_t gehele getallen, de bewerking uitvoeren, en dan
het resultaat terug converteren naar drijvende komma. De functies zijn:

en(v1, v2 [, ...]) Retourneert de bitsgewijze EN van de waarden uit de argumentenlijst.
Het moeten er minstens twee zijn.

compl(golf) Retourneert het bitsgewijze complement van golf.

Verschuiven(golf, tellen) Retourneer de waarde van golf, naar links verschoven tellen bits.

of(v1, v2 [, ...]) Retourneert de bitsgewijze OR van de waarden uit de argumentenlijst.
Het moeten er minstens twee zijn.

rverschuiving(golf, tellen) Retourneer de waarde van golf, gelijk langs geschoven tellen bits.

xor(v1, v2 [, ...]) Retourneert de bitsgewijze XOR van de waarden in de argumentenlijst.
Het moeten er minstens twee zijn.

Type Functie
De volgende functie is bedoeld voor gebruik met multidimensionale arrays.

isarray(x)
Retourneert waar als x is een array, anders false.

internationalisering Functies
De volgende functies kunnen vanuit uw AWK-programma worden gebruikt voor het vertalen van tekenreeksen
tijdens runtime. Voor volledige details, zie GAWK: effectief AWK Programming.

bindtekstdomein(directory [, domein])
Geef de map op waar gapen zoekt naar de .ggo bestanden, voor het geval dat niet het geval is, of
kunnen niet op de ``standaard'' locaties worden geplaatst (bijvoorbeeld tijdens testen). Het keert terug
de map waar domein is ``gebonden.''
De standaard domein is de waarde van TEXTDOMEIN. Indien directory is de nulreeks
(""), dan bindtekstdomein() retourneert de huidige binding voor het gegeven domein.

dcgettext(snaar [, domein [, categorie]])
Geef de vertaling terug van snaar in tekstdomein domein voor landcategorie
categorie. De standaardwaarde voor domein is de huidige waarde van TEXTDOMEIN. De
standaardwaarde voor categorie is "LC_MESSAGES".
Als u een waarde opgeeft voor categorie, moet het een string zijn die gelijk is aan een van de bekende
landcategorieën beschreven in GAWK: effectief AWK Programming. Jij moet ook
geef een tekstdomein op. Gebruik TEXTDOMEIN als u het huidige domein wilt gebruiken.

dcngettekst(string1, string2, aantal [, domein [, categorie]])
Geef de meervoudsvorm terug die gebruikt is voor aantal van de vertaling van string1 en string2 in
tekst domein domein voor landcategorie categorie. De standaardwaarde voor domein is
de huidige waarde van TEXTDOMEIN. De standaardwaarde voor categorie is "LC_MESSAGES".
Als u een waarde opgeeft voor categorie, moet het een string zijn die gelijk is aan een van de bekende
landcategorieën beschreven in GAWK: effectief AWK Programming. Jij moet ook
geef een tekstdomein op. Gebruik TEXTDOMEIN als u het huidige domein wilt gebruiken.

GEBRUIKER GEDEFINIEERDE FUNCTIES


Functies in AWK worden als volgt gedefinieerd:

functie naam(parameter lijst) { verklaringen }

Functies worden uitgevoerd wanneer ze worden aangeroepen vanuit expressies in patronen of
acties. Werkelijke parameters die in de functieaanroep worden opgegeven, worden gebruikt om de
formele parameters die in de functie zijn gedeclareerd. Arrays worden doorgegeven door middel van referentie, andere
variabelen worden doorgegeven op waarde.

Omdat functies oorspronkelijk geen deel uitmaakten van de AWK-taal, werd de voorziening voor local
variabelen is nogal onhandig: ze worden als extra parameters in de parameterlijst gedeclareerd.
De afspraak is om lokale variabelen van echte parameters te scheiden door extra spaties in de
parameterlijst. Bijvoorbeeld:

functie f(p, q, a, b) # a en b zijn lokaal
{
...
}

/abc/ { ... ; f(1, 2) ; ... }

Het linkerhaakje in een functieaanroep is vereist om de functie onmiddellijk te volgen
naam, zonder enige tussenliggende witruimte. Dit vermijdt een syntactische dubbelzinnigheid met de
concatenatie-operator. Deze beperking is niet van toepassing op de vermelde ingebouwde functies
bovenstaand.

Functies kunnen elkaar aanroepen en kunnen recursief zijn. Functieparameters gebruikt als lokaal
variabelen worden geïnitialiseerd op de nulreeks en het getal nul bij het aanroepen van de functie.

Te gebruiken terugkeer uitdrukken om een ​​waarde uit een functie terug te geven. De retourwaarde is niet gedefinieerd als dit niet het geval is
waarde wordt opgegeven, of als de functie terugkeert door van het einde af te vallen.

Als gapen uitbreiding kunnen functies indirect worden aangeroepen. Om dit te doen, wijst u de naam toe van
de functie die moet worden aangeroepen, als een tekenreeks, voor een variabele. Gebruik vervolgens de variabele alsof deze bestaat
waren de naam van een functie, voorafgegaan door een @ teken, zo:
functie mijnfunctie()
{
print "mijnfunc genaamd"
...
}

{ ...
de_func = "mijnfunc"
@the_func() # Bellen door de_func naar mijn functie
...
}
Vanaf versie 4.1.2 werkt dit met door de gebruiker gedefinieerde functies, ingebouwde functies en
uitbreidingsfuncties.

If --lint is verstrekt, gapen waarschuwt voor oproepen naar ongedefinieerde functies tijdens het parseren,
in plaats van tijdens runtime. Het aanroepen van een ongedefinieerde functie tijdens runtime is een fatale fout.

Het woord func kan worden gebruikt in plaats van functie, hoewel dit verouderd is.

DYNAMISCH LADEN NIEUW FUNCTIES


U kunt dynamisch nieuwe ingebouwde functies aan de running toevoegen gapen tolk met de
@laden stelling. De volledige details vallen buiten het bestek van deze handleiding; zien GAWK:
effectief AWK Programming.

SIGNALEN


De gapen profiler accepteert twee signalen. SIGUSR1 zorgt ervoor dat het een profiel en functie dumpt
call stack naar het profielbestand, dat is een van beide awkprof.uit, of welk bestand dan ook werd genoemd
met de --profiel keuze. Vervolgens blijft het lopen. ZUCHT oorzaken gapen om de te dumpen
profiel- en functieaanroepstapel en sluit vervolgens af.

INTERNATIONALISERING


Tekenreeksconstanten zijn reeksen tekens tussen dubbele aanhalingstekens. In niet-Engels
spreekomgevingen is het mogelijk om tekenreeksen in het AWK-programma als vereist te markeren
vertaling naar de lokale natuurlijke taal. Dergelijke strings worden in het AWK-programma gemarkeerd met
een leidend onderstrepingsteken (“_”). Bijvoorbeeld,

gapen 'BEGINNEN { print "Hallo, wereld" }'

altijd afdrukken Hallo, wereld. Maar,

gapen 'BEGINNEN { print _"Hallo, wereld" }'

zou kunnen afdrukken hello, monde In Frankrijk.

Er zijn verschillende stappen betrokken bij het produceren en uitvoeren van een lokaliseerbaar AWK-programma.

1. Voeg een toe BEGINNEN actie om een ​​waarde toe te kennen aan de TEXTDOMEIN variabele om het tekstdomein in te stellen
naar een naam die aan uw programma is gekoppeld:

BEGINNEN { TEXTDOMEIN = "mijnprog" }

Dit staat toe gapen om de vondst .ggo bestand dat aan uw programma is gekoppeld. Zonder dit
stap, gapen gebruikt berichten tekstdomein, dat waarschijnlijk geen vertalingen bevat
voor uw programma.

2. Markeer alle tekenreeksen die moeten worden vertaald met voorlooponderstrepingstekens.

3. Gebruik indien nodig de dcgettekst() en / of bindtekstdomein() functies in uw programma,
indien van toepassing.

4. Lopen gapen --gen-pot -f mijnprog.awk > mijnprog.pot om een ​​te genereren .pot bestand voor uw
programma.

5. Zorg voor passende vertalingen en bouw en installeer de bijbehorende vertalingen .ggo bestanden.

De internationaliseringskenmerken worden uitgebreid beschreven in GAWK: effectief AWK
Programming.

POSIX COMPATIBILITEIT


Een primair doel voor gapen is compatibel met de POSIX-standaard, evenals met de
nieuwste versie van Brian Kernighan's awk. Hiertoe, gapen houdt het volgende in
voor de gebruiker zichtbare kenmerken die niet in het AWK-boek worden beschreven, maar deel uitmaken van Brian
Kernighan's versie van awken zijn in de POSIX-standaard.

Het boek geeft aan dat opdrachtregelvariabelen worden toegewezen wanneer awk zou anders
open het argument als een bestand, dat zich na de BEGINNEN regel wordt uitgevoerd. Echter, binnen
eerdere implementaties, toen een dergelijke toewijzing vóór bestandsnamen verscheen, werd het
opdracht zou gebeuren vaardigheden de BEGINNEN regel werd uitgevoerd. Toepassingen kwamen afhankelijk van
deze functie." Wanneer awk is gewijzigd om overeen te komen met de documentatie, de -v optie voor
het toewijzen van variabelen vóór de uitvoering van het programma werd toegevoegd om toepassingen mogelijk te maken
afhankelijk van het oude gedrag. (Deze functie is overeengekomen door zowel de Bell
Laboratoria en de GNU-ontwikkelaars.)

Bij het verwerken van argumenten gapen gebruikt de speciale optie “--” om het einde aan te geven
argumenten. In de compatibiliteitsmodus waarschuwt het voor ongedefinieerde opties, maar negeert het verder.
Bij normaal gebruik worden dergelijke argumenten doorgegeven aan het AWK-programma, zodat het kan worden verwerkt.

Het AWK-boek definieert niet de retourwaarde van zand(). De POSIX-standaard heeft het
retourneer het zaad dat het gebruikte, zodat willekeurige nummerreeksen kunnen worden bijgehouden.
Daarom zand() in gapen geeft ook zijn huidige zaad terug.

Andere nieuwe features zijn: Het gebruik van meerdere -f opties (van MKS awk); de MILIEU reeks;
de \a en \v escape-sequenties (oorspronkelijk gedaan in gapen en teruggevoerd naar de bel
Laboratoria-versie); de verlagen() en topper() ingebouwde functies (van de Bell
Laboratoria-versie); en de ISO C-conversiespecificaties in printf (eerst gedaan in
de Bell Laboratories-versie).

HISTORISCH KENMERKEN


Er is één kenmerk van historische AWK-implementaties gapen ondersteunt: Het is mogelijk
om de lengte() ingebouwde functie, niet alleen zonder argument, maar zelfs zonder
haakjes! Dus,

a = lengte # Heilig iets 60, Batman!

is hetzelfde als een van beide

a = lengte()
a = lengte($0)

Het gebruik van deze functie is een slechte gewoonte, en gapen geeft een waarschuwing over het gebruik ervan if --lint is
opgegeven op de opdrachtregel.

GNU EXTENSIONS


Gaaf heeft een te groot aantal extensies voor POSIX awk. Hierin worden ze beschreven
sectie. Alle hier beschreven extensies kunnen worden uitgeschakeld door een beroep te doen op gapen met de
--traditioneel or --positief opties.

De volgende kenmerken van gapen zijn niet beschikbaar in POSIX awk.

· Er wordt geen padzoekopdracht uitgevoerd voor bestanden met de naam -f keuze. Daarom, de AWKPAD
omgevingsvariabele is niet speciaal.

· Er is geen mogelijkheid om bestanden op te nemen (gapen's @erbij betrekken mechanisme).

· Er is geen mogelijkheid voor het dynamisch toevoegen van nieuwe functies geschreven in C (gapen's @laden
mechanisme).

· De \x ontsnappingsreeks. (Gehandicapt met --positief.)

· De mogelijkheid om de lijnen daarna voort te zetten ? en :. (Gehandicapt met --positief.)

· Octale en hexadecimale constanten in AWK-programma's.

· De ARGIND, BINMODE, FOUT, LINT, RT en TEXTDOMEIN variabelen zijn niet speciaal.

· De NEGEER ZAAK variabel en de bijwerkingen ervan zijn niet beschikbaar.

· De VELDBREEDTE veldsplitsing met variabele en vaste breedte.

· De FPAT variabele en veldsplitsing op basis van veldwaarden.

· De PROCINFO array is niet beschikbaar.

· Het gebruik van RS als reguliere expressie.

· De speciale bestandsnamen die beschikbaar zijn voor I/O-omleiding worden niet herkend.

· De |& operator voor het creëren van co-processen.

· De BEGINBESTAND en EINDBESTAND speciale patronen zijn niet beschikbaar.

· De mogelijkheid om individuele tekens op te splitsen met behulp van de null-tekenreeks als waarde van FS,
en als derde argument daarvoor splitsen ().

· Een optioneel vierde argument splitsen () om de scheidingsteksten te ontvangen.

· Het optionele tweede argument voor de dichtbij() functie.

· Het optionele derde argument voor de bij elkaar passen() functie.

· De mogelijkheid om positionele specificaties te gebruiken printf en sprint().

· De mogelijkheid om een ​​array door te geven lengte().

· De En(), een soort(), assortiment(), bindtekstdomein(), compl(), dcgettekst(), dcngettekst(),
gensub(), lverschuiving(), mktijd(), of(), patsplit(), rverschuiving(), strftime (), strtonum(),
systeemtijd() en xor() functies.

· Lokaliseerbare tekenreeksen.

Het AWK-boek definieert niet de retourwaarde van de dichtbij() functie. Gaaf's dichtbij()
retourneert de waarde van fsluiten(3), of sluit(3), bij het sluiten van een uitvoerbestand of pipe,
respectievelijk. Het retourneert de afsluitstatus van het proces bij het sluiten van een invoerpijp. De
de retourwaarde is -1 als het genoemde bestand, de pipe of het co-proces niet is geopend met a
omleiding.

. gapen wordt aangeroepen met de --traditioneel optie, als de fs argument tegen de -F Optie is
“t”, dan FS is ingesteld op het tabteken. Let op dat typen gapen -F\t ... veroorzaakt eenvoudigweg
de shell om de “t” te citeren en geeft “\t” niet door aan de -F keuze. Aangezien dit een
nogal lelijk speciaal geval, dit is niet het standaardgedrag. Dit gedrag ook niet
optreden als --positief is gespecificeerd. Om echt een tabteken als veld te krijgen
scheidingsteken, kunt u het beste enkele aanhalingstekens gebruiken: gapen -F'\t' ....

MILIEU VARIABELEN


De AWKPAD omgevingsvariabele kan worden gebruikt om een ​​lijst met mappen weer te geven gapen
zoekt bij het zoeken naar bestanden met de naam via de -f, --bestand, -i en --erbij betrekken opties. Als
de eerste zoekopdracht mislukt, het pad wordt na het toevoegen opnieuw doorzocht .awk naar de bestandsnaam.

De AWKLIBPAD omgevingsvariabele kan worden gebruikt om een ​​lijst met mappen weer te geven gapen
zoekt bij het zoeken naar bestanden met de naam via de -l en --laden opties.

De GAWK_READ_TIMEOUT omgevingsvariabele kan worden gebruikt om een ​​time-out in op te geven
milliseconden voor het lezen van invoer van een terminal, pijpleiding of tweerichtingscommunicatie, inclusief
stopcontacten.

Voor verbinding met een externe host via socket, GAWK_SOCK_RETRIES controleert het aantal
nieuwe pogingen, en GAWK_MSEC_SLEEP en het interval tussen nieuwe pogingen. De tussenstand is binnen
milliseconden. Op systemen die dit niet ondersteunen jij slaapt(3), de waarde wordt naar boven afgerond op een
integraal aantal seconden.

If POSIXLY_CORRECT bestaat dus in de omgeving gapen gedraagt ​​zich precies alsof --positief HAD
opgegeven op de opdrachtregel. Als --lint is gespecificeerd, gapen geeft een waarschuwing
bericht hierover.

EXIT STATUS


Indien de afrit statement wordt dan gebruikt met een waarde gapen wordt afgesloten met de opgegeven numerieke waarde
aan.

Anders, als er geen problemen waren tijdens de uitvoering, gapen eindigt met de waarde van de C
constante EXIT_SUCCESS. Meestal is dit nul.

Als er een fout optreedt, gapen eindigt met de waarde van de constante C EXIT_FAILURE. Dit is
meestal één.

If gapen wordt afgesloten vanwege een fatale fout, de afsluitstatus is 2. Op niet-POSIX-systemen is dit het geval
waarde kan worden toegewezen EXIT_FAILURE.

VERSIE INFORMATIE


Deze manpaginadocumenten gapen, Versie 4.1.

AUTEURS


De originele versie van UNIX awk is ontworpen en geïmplementeerd door Alfred Aho, Peter
Weinberger en Brian Kernighan van Bell Laboratories. Brian Kernighan blijft dat doen
behouden en verbeteren.

Paul Rubin en Jay Fenlason van de Free Software Foundation schreven dit gapen, compatibel zijn
met de originele versie van awk gedistribueerd in zevende editie UNIX. Johannes Bos
heeft een aantal bugfixes bijgedragen. David Trueman, met bijdragen van Arnold Robbins,
gemaakt gapen compatibel met de nieuwe versie van UNIX awk. Arnold Robbins is de stroming
onderhouder.

Bekijk GAWK: effectief AWK Programming voor een volledige lijst van de bijdragers aan gapen en
documentatie.

Zie de README bestand in de gapen distributie voor actuele informatie over beheerders
en welke poorten momenteel worden ondersteund.

BUG VERSLAGEN


Als u een bug ontdekt in gapen, stuur dan een e-mail naar [e-mail beveiligd]. Alstublieft
omvatten uw besturingssysteem en de revisie ervan, de versie ervan gapen (Van gapen --versie),
welke C-compiler je hebt gebruikt om het te compileren, en een testprogramma en gegevens die zo klein zijn als
mogelijk het probleem te reproduceren.

Voordat u een bugrapport verzendt, moet u het volgende doen. Controleer eerst of dit het geval is
de nieuwste versie van gapen. Bij elke release worden veel bugs (meestal subtiele) opgelost,
en als de jouwe verouderd is, is het probleem mogelijk al opgelost. Ten tweede, zie alstublieft
als u de omgevingsvariabele instelt LC_ALL naar LC_ALL=C zorgt ervoor dat dingen zich gedragen zoals jij
verwachten. Als dat zo is, is het een locale-probleem en kan het wel of niet echt een bug zijn. Eindelijk, alstublieft
Lees deze man-pagina en de referentiehandleiding zorgvuldig door om er zeker van te zijn dat wat u denkt een
bug echt is, in plaats van alleen maar een gril in de taal.

Wat je ook doet, doe NIET plaats een bugrapport in comp.lang.awk. Terwijl de gapen ontwikkelaars
Lees af en toe deze nieuwsgroep en plaats bugrapporten. Er is een onbetrouwbare manier om te rapporteren
insecten. Gebruik in plaats daarvan de hierboven vermelde e-mailadressen. Echt.

Als u een op GNU/Linux of BSD gebaseerd systeem gebruikt, wilt u wellicht een bugrapport indienen bij
de leverancier van uw distributie. Dat is prima, maar stuur een kopie naar de ambtenaar
e-mailadres ook, aangezien er geen garantie is dat het bugrapport zal worden doorgestuurd
de gapen onderhouder.

Gebruik gawk online met behulp van onworks.net-services


Gratis servers en werkstations

Windows- en Linux-apps downloaden

Linux-commando's

Ad