Awk: Skillnad mellan sidversioner

Från Wiki.linux.se
Hoppa till navigering Hoppa till sök
(Skapade sidan med ''''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...')
 
 
(9 mellanliggande sidversioner av samma användare visas inte)
Rad 1: Rad 1:
'''NAMN'''
== awk - Mönsterinriktad textbearbetning ==
Kommandot `awk` används för mönsterinriktad bearbetning och rapportering av text i ett Unix-liknande operativsystem. Det är ett kraftfullt verktyg för textbearbetning och manipulation av textströmmar.


''mawk'' - mönsterskanning och textbearbetningsspråk
=== Syntax ===
awk [ALTERNATIV] 'PROGRAM' [FIL]...


'''SYNOPSIS'''
=== Beskrivning ===
Kommandot `awk` är ett programmeringsspråk som används för att skriva små program som bearbetar text. Det används för att extrahera information från textfiler, bearbeta textströmmar och generera rapporter. `awk` arbetar genom att läsa in en rad i taget från en fil eller standardinmatning, och utför sedan ett mönster och åtgärd på varje rad som matchar mönstret.


mawk [-W alternativ] [-F värde] [-v var=värde] [--] 'program text' [fil ...]
=== Alternativ ===
Kommandot `awk` stöder flera alternativ som kan användas för att justera hur bearbetningen utförs:


mawk [-W alternativ] [-F värde] [-v var=värde] [-f program-fil] [--] [fil ...]
* -F FS - Ange fältseparatorn (FS) till ett specifikt tecken eller sträng.
* -v VAR=VAL - Ange en variabel (VAR) till ett specifikt värde (VAL) innan bearbetningen börjar.
* -f FIL - Läs in ett `awk`-program från en fil (FIL) istället för från kommandoraden.
* -mf N - Ange det maximala antalet fält till N.
* -mr N - Ange det maximala antalet poster till N.
* -W version - Visa `awk`-version och avsluta.
* -W exec - Kör `awk`-programmet utan att tolka resterande argument.


=== Exempel ===
Här är några praktiska exempel som visar hur du kan använda `awk`-kommandot:


'''BESKRIVNING'''
* För att skriva ut den första kolumnen i en textfil:
<code>
awk '{print $1}' fil.txt
</code>


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.
* För att skriva ut den andra kolumnen av en fil med kommatecken som fältseparator:
<code>
awk -F, '{print $2}' fil.txt
</code>


'''ALTERNATIV'''
* För att skriva ut rader som matchar ett specifikt mönster:
<code>
awk '/mönster/' fil.txt
</code>


-F värde ställer in fältseparatorn, FS, till värde.
* För att summera värden i den tredje kolumnen:
<code>
awk '{sum += $3} END {print sum}' fil.txt
</code>


-f fil  Programtext läses från filen istället för från kommandoraden. Flera -f-alternativ är tillåtna.
* För att sätta en variabel och använda den i programmet:
<code>
awk -v var=10 '{print $1 * var}' fil.txt
</code>


-v var=värde  tilldelar värde till programvariabel var.
* För att använda ett `awk`-program från en fil:
<code>
awk -f program.awk fil.txt
</code>


Alternativen ovan kommer att vara tillgängliga med alla POSIX-kompatibla implementeringar av AWK. Implementeringsspecifika alternativ inleds med -W. mawk tillhandahåller dessa:
=== Programstruktur ===
Ett `awk`-program består av mönster och åtgärder som utförs på varje rad som matchar mönstret. Programstrukturen ser ut så här:


--    indikerar det entydiga slutet av alternativen.
<code>
mönster { åtgärd }
</code>


       -W dump   skriver en assembler-liknande lista över programmets interna representation till stdout och avslutar 0 (vid framgångsrik kompilering).
* Mönster - Ett uttryck som bestämmer vilka rader åtgärden ska utföras på. Om inget mönster anges, utförs åtgärden på alla rader.
* Åtgärd - Ett block av kod som utförs på varje rad som matchar mönstret. Åtgärder omges av klammerparenteser {}.


       -W exec file Programtext läses från fil och detta är det sista alternativet.
=== Vanliga Mönster ===
* /regexp/ - Matchar rader som innehåller reguljära uttryck.
* BEGIN - Åtgärder som utförs innan någon rad bearbetas.
* END - Åtgärder som utförs efter alla rader har bearbetats.
* NR==num - Matchar radnummer num.
* FNR==num - Matchar radnummer num i den aktuella filen.
* $num ~ /regexp/ - Matchar när fält num innehåller reguljära uttryck.


Detta är ett användbart alternativ till -f system som stöder #! "magiskt nummer"-konvention för körbara skript. De  implicerade
=== Vanliga Inbyggda Variabler ===
* $0 - Innehåller hela raden.
* $1, $2, ... - Innehåller fält i raden.
* FS - Fältseparator (standard är blanksteg).
* OFS - Utdatafältseparator (standard är blanksteg).
* RS - Postseparator (standard är ny rad).
* ORS - Utpostseparator (standard är ny rad).
* NR - Håller det totala antalet lästa rader.
* FNR - Håller antalet lästa rader i den aktuella filen.
* NF - Håller antalet fält i den aktuella raden.
* FILENAME - Håller namnet den aktuella filen.


skicka in sökvägen till själva skriptet som den sista parametern och förvänta dig inte mer än ett "-"-alternativ #! linje. Därför att
=== Skillnader mellan macOS och Linux ===
Det finns några viktiga skillnader att tänka på när man använder `awk`-kommandot macOS jämfört med Linux:


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.
* Standardinstallationer: På de flesta Linux-distributioner är `awk` förinstallerat som en del av GNU `awk` (gawk). På macOS används en version av `awk` som är baserad på BSD-implementationen.
* Alternativ och funktioner: GNU `awk` på Linux har fler funktioner och alternativ jämfört med BSD `awk` på macOS. Till exempel har `gawk` stöd för flera inbyggda funktioner och tillägg som inte finns i BSD `awk`.
* Kompatibilitet: Skript skrivna för GNU `awk` kan ibland behöva anpassas för att fungera korrekt på BSD `awk`, och vice versa, beroende på de specifika funktioner och tillägg som används.


-W help skriver ut ett användningsmeddelande till stderr och avslutar (samma som "-W usage").      
Det är alltid bra att konsultera `man`-sidan för `awk` på din specifika plattform för att se vilka alternativ och funktioner som är tillgängliga och hur de används.


-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.
=== Felsökning ===
Om du får ett felmeddelande när du använder `awk`, kontrollera följande:


-W posix_space tvingar mawk att inte betrakta '\n' som utrymme.
* Att syntaxen för ditt `awk`-program är korrekt. Kontrollera att du använder rätt mönster och åtgärder.
* Att du använder rätt fältseparator (FS) om du arbetar med en fil med en annan separator än blanksteg.
* Att variabler och funktioner som används i ditt `awk`-program är tillgängliga på din specifika plattform.


-W random=num anropar srand med den givna parametern (och åsidosätter beteendet för automatisk seeding).
=== Se även ===
* [[sed]] - Strömredigerare som används för att bearbeta textströmmar.
* [[grep]] - Sök efter mönster i filer.
* [[cut]] - Ta bort sektioner från varje rad i en fil.
* [[sort]] - Sortera rader i textfiler.
* [[uniq]] - Rapportera eller ta bort dubbletter av linjer.


-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.
=== Källor ===
* [https://www.gnu.org/software/gawk/manual/gawk.html GNU gawk manual]
* [https://man7.org/linux/man-pages/man1/awk.1.html awk manual (Linux)]
* [https://www.unix.com/man-page/osx/1/awk/ awk manual (macOS)]


-W usage      skriver ut ett användningsmeddelande till stderr och avslutar (samma som "-W help").
=== Fler Exempel ===
För att bättre förstå användningen av `awk`, här är fler praktiska exempel:


-W version     mawk skriver sin version och upphovsrätt till stdout och kompilerade gränser till stderr och avslutar 0.
* För att skriva ut specifika kolumner från en textfil:
<code>
awk '{print $2, $5}' fil.txt
</code>
Detta skriver ut den andra och femte kolumnen från varje rad i filen.


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.
* För att skriva ut rader som matchar ett mönster och skriva ut en specifik kolumn:
<code>
awk '/mönster/ {print $3}' fil.txt
</code>
Detta skriver ut den tredje kolumnen från alla rader som innehåller "mönster".


mawk 
* För att räkna antalet rader i en fil:
<code>
awk 'END {print NR}' fil.txt
</code>
Detta skriver ut det totala antalet rader i filen efter att ha bearbetat alla rader.


==== DET AWK SPRÅKET ====
* För att beräkna medelvärdet av siffror i en kolumn:
<code>
awk '{sum += $1} END {print sum/NR}' fil.txt
</code>
Detta beräknar och skriver ut medelvärdet av siffrorna i den första kolumnen.


====     1. Programstruktur ====
* För att byta ut en specifik textsträng i en fil:
        Ett AWK-program är en sekvens av mönster {action}-par och användarfunktionsdefinitioner.
<code>
awk '{gsub(/gammal_text/, "ny_text"); print}' fil.txt
</code>
Detta byter ut alla förekomster av "gammal_text" med "ny_text" och skriver ut resultatet.


        Ett mönster kan vara:
* För att kombinera `awk` med andra kommandon:
<code>
ps aux | awk '{print $1, $2, $3, $11}'
</code>
Detta kombinerar `ps aux`-kommandot med `awk` för att skriva ut specifika kolumner från processlistan.


             BÖRJA
=== Inbyggda Funktioner ===
`awk` har många inbyggda funktioner som kan användas för att bearbeta text och data:


             SLUTET
* length([str]) - Returnerar längden på strängen str eller längden på $0 om inget argument ges.
* substr(str, start, [length]) - Returnerar en delsträng av str som börjar vid position start och är length tecken lång.
* index(str, search) - Returnerar positionen för första förekomsten av söksträngen search i str.
* tolower(str) - Konverterar alla tecken i str till gemener.
* toupper(str) - Konverterar alla tecken i str till versaler.
* systime() - Returnerar den aktuella tiden som antalet sekunder sedan epoken (1970-01-01 00:00:00 UTC).
* strftime(format, [timestamp]) - Returnerar ett formaterat datum/tidssträng baserat på formatsträngen och den valfria timestamp.


             uttryck
=== Avancerade Mönster och Åtgärder ===
Här är några exempel på avancerade mönster och åtgärder:


             uttryck, uttryck
* För att skriva ut varannan rad i en fil:
<code>
awk 'NR % 2 == 0' fil.txt
</code>
Detta skriver ut endast de jämna numrerade raderna.


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‐
* För att summera värden i en kolumn och skriva ut en varning om ett värde överstiger en gräns:
<code>
awk '{sum += $1; if ($1 > 100) print "Varning:", $1} END {print "Summa:", sum}' fil.txt
</code>


uttryckligen matchade. BEGIN- och END-mönster kräver en åtgärd.
* För att räkna antalet unika värden i en kolumn:
<code>
awk '!seen[$1]++' fil.txt
</code>
Detta skriver ut varje unikt värde i den första kolumnen en gång.


Uttalandet avslutas med nya rader, semikolon eller båda. Grupper av satser som åtgärder eller loopkroppar blockeras via { ... } som i C.
=== Användardefinitioner och Funktioner ===
Du kan definiera egna funktioner i `awk` för att återanvända kod:


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.
<code>
function square(x) {
    return x * x
}


awk '{print $1, square($2)}' fil.txt
</code>
Detta definierar en funktion som beräknar kvadraten av ett tal och använder den i ett `awk`-program.


Följande satser styr programflödet inuti block.
=== Skillnader mellan GNU awk och BSD awk ===
För att ytterligare förstå skillnaderna mellan GNU `awk` (gawk) och BSD `awk`, här är några specifika punkter:


* Utökad Funktionalitet i gawk: GNU `awk` innehåller flera utökade funktioner och tillägg som inte finns i BSD `awk`. Till exempel stödjer gawk `BEGINFILE` och `ENDFILE` mönster, vilket gör det möjligt att utföra åtgärder i början och slutet av varje fil, och även inbyggda funktioner för att arbeta med nätverk.
* Tilläggsmoduler i gawk: GNU `awk` kan utökas med dynamiska moduler som erbjuder ytterligare funktioner. Dessa moduler kan laddas vid körning med hjälp av `@load`-direktivet.
* Prestandaförbättringar: GNU `awk` har optimerats för bättre prestanda vid bearbetning av stora datamängder och komplexa mönster.
* Kommandoradsverktyg: På macOS används BSD `awk` som standard, vilket innebär att vissa skript kan behöva modifieras för att fungera korrekt på macOS om de är skrivna specifikt för GNU `awk`.


if ( expr ) påstående
Det är alltid bra att granska dokumentationen för respektive version av `awk` för att säkerställa kompatibilitet och förstå vilka funktioner som är tillgängliga.


if ( expr ) påstående else påstående
=== Ytterligare Resurser ===
För att fördjupa dina kunskaper om `awk`, här är några ytterligare resurser:


while ( expr ) påstående
* [The AWK Programming Language](https://archive.org/details/pdfy-MgN0H1joIoDVoIC7) - En klassisk bok av Aho, Kernighan och Weinberger, de ursprungliga skaparna av `awk`.
* [GNU Awk User's Guide](https://www.gnu.org/software/gawk/manual/) - Den officiella användarguiden för GNU `awk`, som täcker alla funktioner och tillägg.
* [Effective Awk Programming](https://www.gnu.org/software/gawk/manual/gawk.html) - En bok av Arnold Robbins som ger en djupgående introduktion till användning av `awk` och `gawk`.


do påstående while ( expr )
=== Se även ===
* [[sed]] - Strömredigerare som används för att bearbeta textströmmar.
* [[grep]] - Sök efter mönster i filer.
* [[cut]] - Ta bort sektioner från varje rad i en fil.
* [[sort]] - Sortera rader i textfiler.
* [[uniq]] - Rapportera eller ta bort dubbletter av linjer.


for ( opt_expr ; opt_expr ; opt_expr ) påstående
=== Källor ===
* [https://www.gnu.org/software/gawk/manual/gawk.html GNU gawk manual]
* [https://man7.org/linux/man-pages/man1/awk.1.html awk manual (Linux)]
* [https://www.unix.com/man-page/osx/1/awk/ awk manual (macOS)]


for ( var in array ) påstående
[[Kategori:Linuxkommandon]]
 
continue
 
break

Nuvarande version från 26 maj 2024 kl. 09.59

awk - Mönsterinriktad textbearbetning

Kommandot `awk` används för mönsterinriktad bearbetning och rapportering av text i ett Unix-liknande operativsystem. Det är ett kraftfullt verktyg för textbearbetning och manipulation av textströmmar.

Syntax

awk [ALTERNATIV] 'PROGRAM' [FIL]...

Beskrivning

Kommandot `awk` är ett programmeringsspråk som används för att skriva små program som bearbetar text. Det används för att extrahera information från textfiler, bearbeta textströmmar och generera rapporter. `awk` arbetar genom att läsa in en rad i taget från en fil eller standardinmatning, och utför sedan ett mönster och åtgärd på varje rad som matchar mönstret.

Alternativ

Kommandot `awk` stöder flera alternativ som kan användas för att justera hur bearbetningen utförs:

  • -F FS - Ange fältseparatorn (FS) till ett specifikt tecken eller sträng.
  • -v VAR=VAL - Ange en variabel (VAR) till ett specifikt värde (VAL) innan bearbetningen börjar.
  • -f FIL - Läs in ett `awk`-program från en fil (FIL) istället för från kommandoraden.
  • -mf N - Ange det maximala antalet fält till N.
  • -mr N - Ange det maximala antalet poster till N.
  • -W version - Visa `awk`-version och avsluta.
  • -W exec - Kör `awk`-programmet utan att tolka resterande argument.

Exempel

Här är några praktiska exempel som visar hur du kan använda `awk`-kommandot:

  • För att skriva ut den första kolumnen i en textfil:

awk '{print $1}' fil.txt

  • För att skriva ut den andra kolumnen av en fil med kommatecken som fältseparator:

awk -F, '{print $2}' fil.txt

  • För att skriva ut rader som matchar ett specifikt mönster:

awk '/mönster/' fil.txt

  • För att summera värden i den tredje kolumnen:

awk '{sum += $3} END {print sum}' fil.txt

  • För att sätta en variabel och använda den i programmet:

awk -v var=10 '{print $1 * var}' fil.txt

  • För att använda ett `awk`-program från en fil:

awk -f program.awk fil.txt

Programstruktur

Ett `awk`-program består av mönster och åtgärder som utförs på varje rad som matchar mönstret. Programstrukturen ser ut så här:


mönster { åtgärd }

  • Mönster - Ett uttryck som bestämmer vilka rader åtgärden ska utföras på. Om inget mönster anges, utförs åtgärden på alla rader.
  • Åtgärd - Ett block av kod som utförs på varje rad som matchar mönstret. Åtgärder omges av klammerparenteser {}.

Vanliga Mönster

  • /regexp/ - Matchar rader som innehåller reguljära uttryck.
  • BEGIN - Åtgärder som utförs innan någon rad bearbetas.
  • END - Åtgärder som utförs efter alla rader har bearbetats.
  • NR==num - Matchar radnummer num.
  • FNR==num - Matchar radnummer num i den aktuella filen.
  • $num ~ /regexp/ - Matchar när fält num innehåller reguljära uttryck.

Vanliga Inbyggda Variabler

  • $0 - Innehåller hela raden.
  • $1, $2, ... - Innehåller fält i raden.
  • FS - Fältseparator (standard är blanksteg).
  • OFS - Utdatafältseparator (standard är blanksteg).
  • RS - Postseparator (standard är ny rad).
  • ORS - Utpostseparator (standard är ny rad).
  • NR - Håller det totala antalet lästa rader.
  • FNR - Håller antalet lästa rader i den aktuella filen.
  • NF - Håller antalet fält i den aktuella raden.
  • FILENAME - Håller namnet på den aktuella filen.

Skillnader mellan macOS och Linux

Det finns några viktiga skillnader att tänka på när man använder `awk`-kommandot på macOS jämfört med Linux:

  • Standardinstallationer: På de flesta Linux-distributioner är `awk` förinstallerat som en del av GNU `awk` (gawk). På macOS används en version av `awk` som är baserad på BSD-implementationen.
  • Alternativ och funktioner: GNU `awk` på Linux har fler funktioner och alternativ jämfört med BSD `awk` på macOS. Till exempel har `gawk` stöd för flera inbyggda funktioner och tillägg som inte finns i BSD `awk`.
  • Kompatibilitet: Skript skrivna för GNU `awk` kan ibland behöva anpassas för att fungera korrekt på BSD `awk`, och vice versa, beroende på de specifika funktioner och tillägg som används.

Det är alltid bra att konsultera `man`-sidan för `awk` på din specifika plattform för att se vilka alternativ och funktioner som är tillgängliga och hur de används.

Felsökning

Om du får ett felmeddelande när du använder `awk`, kontrollera följande:

  • Att syntaxen för ditt `awk`-program är korrekt. Kontrollera att du använder rätt mönster och åtgärder.
  • Att du använder rätt fältseparator (FS) om du arbetar med en fil med en annan separator än blanksteg.
  • Att variabler och funktioner som används i ditt `awk`-program är tillgängliga på din specifika plattform.

Se även

  • sed - Strömredigerare som används för att bearbeta textströmmar.
  • grep - Sök efter mönster i filer.
  • cut - Ta bort sektioner från varje rad i en fil.
  • sort - Sortera rader i textfiler.
  • uniq - Rapportera eller ta bort dubbletter av linjer.

Källor

Fler Exempel

För att bättre förstå användningen av `awk`, här är fler praktiska exempel:

  • För att skriva ut specifika kolumner från en textfil:

awk '{print $2, $5}' fil.txt

Detta skriver ut den andra och femte kolumnen från varje rad i filen.
  • För att skriva ut rader som matchar ett mönster och skriva ut en specifik kolumn:

awk '/mönster/ {print $3}' fil.txt

Detta skriver ut den tredje kolumnen från alla rader som innehåller "mönster".
  • För att räkna antalet rader i en fil:

awk 'END {print NR}' fil.txt

Detta skriver ut det totala antalet rader i filen efter att ha bearbetat alla rader.
  • För att beräkna medelvärdet av siffror i en kolumn:

awk '{sum += $1} END {print sum/NR}' fil.txt

Detta beräknar och skriver ut medelvärdet av siffrorna i den första kolumnen.
  • För att byta ut en specifik textsträng i en fil:

awk '{gsub(/gammal_text/, "ny_text"); print}' fil.txt

Detta byter ut alla förekomster av "gammal_text" med "ny_text" och skriver ut resultatet.
  • För att kombinera `awk` med andra kommandon:

ps aux | awk '{print $1, $2, $3, $11}'

Detta kombinerar `ps aux`-kommandot med `awk` för att skriva ut specifika kolumner från processlistan.

Inbyggda Funktioner

`awk` har många inbyggda funktioner som kan användas för att bearbeta text och data:

  • length([str]) - Returnerar längden på strängen str eller längden på $0 om inget argument ges.
  • substr(str, start, [length]) - Returnerar en delsträng av str som börjar vid position start och är length tecken lång.
  • index(str, search) - Returnerar positionen för första förekomsten av söksträngen search i str.
  • tolower(str) - Konverterar alla tecken i str till gemener.
  • toupper(str) - Konverterar alla tecken i str till versaler.
  • systime() - Returnerar den aktuella tiden som antalet sekunder sedan epoken (1970-01-01 00:00:00 UTC).
  • strftime(format, [timestamp]) - Returnerar ett formaterat datum/tidssträng baserat på formatsträngen och den valfria timestamp.

Avancerade Mönster och Åtgärder

Här är några exempel på avancerade mönster och åtgärder:

  • För att skriva ut varannan rad i en fil:

awk 'NR % 2 == 0' fil.txt

Detta skriver ut endast de jämna numrerade raderna.
  • För att summera värden i en kolumn och skriva ut en varning om ett värde överstiger en gräns:

awk '{sum += $1; if ($1 > 100) print "Varning:", $1} END {print "Summa:", sum}' fil.txt

  • För att räkna antalet unika värden i en kolumn:

awk '!seen[$1]++' fil.txt

Detta skriver ut varje unikt värde i den första kolumnen en gång.

Användardefinitioner och Funktioner

Du kan definiera egna funktioner i `awk` för att återanvända kod:

function square(x) {

   return x * x

}

awk '{print $1, square($2)}' fil.txt Detta definierar en funktion som beräknar kvadraten av ett tal och använder den i ett `awk`-program.

Skillnader mellan GNU awk och BSD awk

För att ytterligare förstå skillnaderna mellan GNU `awk` (gawk) och BSD `awk`, här är några specifika punkter:

  • Utökad Funktionalitet i gawk: GNU `awk` innehåller flera utökade funktioner och tillägg som inte finns i BSD `awk`. Till exempel stödjer gawk `BEGINFILE` och `ENDFILE` mönster, vilket gör det möjligt att utföra åtgärder i början och slutet av varje fil, och även inbyggda funktioner för att arbeta med nätverk.
  • Tilläggsmoduler i gawk: GNU `awk` kan utökas med dynamiska moduler som erbjuder ytterligare funktioner. Dessa moduler kan laddas vid körning med hjälp av `@load`-direktivet.
  • Prestandaförbättringar: GNU `awk` har optimerats för bättre prestanda vid bearbetning av stora datamängder och komplexa mönster.
  • Kommandoradsverktyg: På macOS används BSD `awk` som standard, vilket innebär att vissa skript kan behöva modifieras för att fungera korrekt på macOS om de är skrivna specifikt för GNU `awk`.

Det är alltid bra att granska dokumentationen för respektive version av `awk` för att säkerställa kompatibilitet och förstå vilka funktioner som är tillgängliga.

Ytterligare Resurser

För att fördjupa dina kunskaper om `awk`, här är några ytterligare resurser:

Se även

  • sed - Strömredigerare som används för att bearbeta textströmmar.
  • grep - Sök efter mönster i filer.
  • cut - Ta bort sektioner från varje rad i en fil.
  • sort - Sortera rader i textfiler.
  • uniq - Rapportera eller ta bort dubbletter av linjer.

Källor