Awk: Skillnad mellan sidversioner

Från Wiki.linux.se
Hoppa till navigering Hoppa till sök
Ingen redigeringssammanfattning
Ingen redigeringssammanfattning
Rad 91: Rad 91:


break
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).

Versionen från 10 maj 2023 kl. 07.04

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).