Awk
NAMN
mawk - mönsterskanning och textbearbetningsspråk
SYNOPSIS
mawk [-W alternativ] [-F värde] [-v var=värde] [--] 'program text' [fil ...]
mawk [-W alternativ] [-F värde] [-v var=värde] [-f program-fil] [--] [fil ...]
BESKRIVNING
mawk är en tolk för programmeringsspråket AWK. AWK-språket är användbart för manipulering av datafiler, texthämtning och bearbetning,och för prototyper och experimenterande med algoritmer. mawk är en ny awk vilket betyder att den implementerar AWK-språket som definierats i Aho, ernighan och Weinberger, The AWK Programming Language, Addison-Wesley Publishing, 1988 (hädanefter kallad AWK-boken.) mawk överensstämmer med POSIX 1003.2 (utkast 11.3) definition av AWK-språket som innehåller några funktioner som inte beskrivs i AWK-boken, och mawk tillhandahåller ett litet antal förlängningar. Ett AWK-program är en sekvens av mönster {action}-par och funktionsdefinitioner. Korta program skrivs in på kommandoraden som vanligtvis är innesluten i ' ' för att undvika skaltolkning. Längre program kan läsas in från en fil med alternativet -f. Datainmatning läses från listan över filer på kommandoraden eller från standardinmatning när listan är tom. Inmatningen delas upp i poster som bestäms av postseparatorvariabeln, RS. Inledningsvis är RS = "\n" och poster är synonyma med linjer. Varje post jämförs mot varje mönster och om det stämmer överens, programtexten för {action} exekveras.
ALTERNATIV
-F värde ställer in fältseparatorn, FS, till värde.
-f fil Programtext läses från filen istället för från kommandoraden. Flera -f-alternativ är tillåtna.
-v var=värde tilldelar värde till programvariabel var.
Alternativen ovan kommer att vara tillgängliga med alla POSIX-kompatibla implementeringar av AWK. Implementeringsspecifika alternativ inleds med -W. mawk tillhandahåller dessa:
-- indikerar det entydiga slutet av alternativen.
-W dump skriver en assembler-liknande lista över programmets interna representation till stdout och avslutar 0 (vid framgångsrik kompilering).
-W exec file Programtext läses från fil och detta är det sista alternativet.
Detta är ett användbart alternativ till -f på system som stöder #! "magiskt nummer"-konvention för körbara skript. De implicerade
skicka in sökvägen till själva skriptet som den sista parametern och förvänta dig inte mer än ett "-"-alternativ på #! linje. Därför att
mawk kan kombinera flera -W-alternativ separerade med kommatecken, du kan använda det här alternativet när ett extra -W-alternativ behövs.
-W help skriver ut ett användningsmeddelande till stderr och avslutar (samma som "-W usage").
-W interactive ställer in obuffrad skrivning till stdout och linjebuffrad läsning från stdin. Poster från stdin är linjer oavsett värdet på RS.
-W posix_space tvingar mawk att inte betrakta '\n' som utrymme.
-W random=num anropar srand med den givna parametern (och åsidosätter beteendet för automatisk seeding).
-W sprintf=num justerar storleken på mawks interna sprintf-buffert till antal byte. Mer än sällsynt användning av det här alternativet indikerar att mawk bör kompileras om.
-W usage skriver ut ett användningsmeddelande till stderr och avslutar (samma som "-W help").
-W version mawk skriver sin version och upphovsrätt till stdout och kompilerade gränser till stderr och avslutar 0.
mawk accepterar förkortningar för något av dessa alternativ, t.ex. "-W v" och "-Wv" säger båda till mawk att visa sin version.
mawk
DET AWK SPRÅKET
1. Programstruktur
Ett AWK-program är en sekvens av mönster {action}-par och användarfunktionsdefinitioner.
Ett mönster kan vara:
BÖRJA
SLUTET
uttryck
uttryck, uttryck
En, men inte båda, av mönster {action} kan utelämnas. Om {action} utelämnas är det implicit { print }. Om mönstret utelämnas är det im‐
uttryckligen matchade. BEGIN- och END-mönster kräver en åtgärd.
Uttalandet avslutas med nya rader, semikolon eller båda. Grupper av satser som åtgärder eller loopkroppar blockeras via { ... } som i C.
Den sista satsen i ett block behöver ingen terminator. Tomma linjer har ingen betydelse; en tom sats avslutas med semikolon. Lång uttalanden kan fortsätta med ett snedstreck, \. Ett uttalande kan brytas utan ett snedstreck efter kommatecken, vänster klammerparentes, &&, ||, gör, annars, höger parentes för en if, while eller for-sats, och höger parentes för en funktionsdefinition. En kommentar börjar med # och sträcker sig till, men inkluderar inte slutet av raden.
Följande satser styr programflödet inuti block.
if ( expr ) påstående
if ( expr ) påstående else påstående
while ( expr ) påstående
do påstående while ( expr )
for ( opt_expr ; opt_expr ; opt_expr ) påstående
for ( var in array ) påstående
continue
break
2. Datatyper, konvertering och jämförelse
Det finns två grundläggande datatyper, numerisk och sträng. Numeriska konstanter kan vara heltal som -2, decimal som 1,08 eller i vetenskaplig notation som -1.1e4 eller .28E-3. Alla tal representeras internt och alla beräkningar görs i float‐ing-punktsaritmetik.
Så till exempel är uttrycket 0.2e2 == 20 sant och sant representeras som 1.0. Strängkonstanter omges av dubbla citattecken. "Detta är en sträng med en nyrad i slutet.\n" Strängar kan fortsätta över en linje genom att escape (\) den nya raden. Följande flyktsekvenser känns igen.
Strängkonstanter omges av dubbla citattecken.
"Detta är en sträng med en nyrad i slutet.\n"
Strängar kan fortsätta över en linje genom att escape (\) den nya raden. Följande flyktsekvenser känns igen.
\\ \
\" "
\a alert, ascii 7
\b backsteg, ascii 8
\t tab, ascii 9
\n nyrad, ascii 10
\v vertikal flik, ascii 11
\f formfeed, ascii 12
\r vagnretur, ascii 13
\ddd 1, 2 eller 3 oktala siffror för ascii ddd
\xhh 1 eller 2 hexadecimala siffror för ascii hh
Om du escape någon annan karaktär \c, får du \c, d.v.s. mawk ignorerar escape.
Det finns egentligen tre grundläggande datatyper; den tredje är nummer och sträng som har både ett numeriskt värde och ett strängvärde på samma gång. Användardefinierade variabler uppstår när de först refereras och initieras till null, ett tal och strängvärde som har numeriskt värde 0 och strängvärde "". Icke-trivialt antal och strängtypade data kommer från indata och lagras vanligtvis i fält. (Se avsnitt 4).
Strängkonstanter omges av dubbla citattecken.
"Detta är en sträng med en nyrad i slutet.\n"
Strängar kan fortsätta över en linje genom att escape (\) den nya raden. Följande flyktsekvenser känns igen.
\\ \
\" "
\a alert, ascii 7
\b backsteg, ascii 8
\t tab, ascii 9
\n nyrad, ascii 10
\v vertikal flik, ascii 11
\f formfeed, ascii 12
\r vagnretur, ascii 13
\ddd 1, 2 eller 3 oktala siffror för ascii ddd
\xhh 1 eller 2 hexadecimala siffror för ascii hh
Om du escape någon annan karaktär \c, får du \c, d.v.s. mawk ignorerar flykt. Det finns egentligen tre grundläggande datatyper; den tredje är nummer och sträng som har både ett numeriskt värde och ett strängvärde på samma gång. Användardefinierade variabler uppstår när de först refereras och initieras till null, ett ta och strängvärde som har numeriskt värde 0 och strängvärde "". Icke-trivialt antal och strängtypade data kommer från indata och lagras allmänt i fält. (Se avsnitt 4).