Datorsystem har alltid använts för att analysera värdefull information som lagras i enkla textfiler. I sin tur hanteras själva datorsystemen genom loggfiler. Vad som är vanligt i dessa två situationer är att de innehåller en stor mängd data, som ofta behöver strömlinjeformas innan de faktiskt läser data; annars är det bara förvirrande.
Om du till exempel läser en del data ordnade i tabellform, vill du ha några kolumner, du vill inte ha andra.
Detta krav var svårt redan på dagen, och därför har GNU-projektet ett fantastiskt verktyg som hjälper användare att filtrera och extrahera data för en bättre upplevelse. Det verktyget är AWK.
Historia
AWK är faktiskt ett programmeringsspråk som är tillägnad textbehandling. Den används för extraktion av data i specifika mönster. Det utvecklades på 1970-talet av Bell Labs, av Alfred Aho, Peter Weinberger och Brian Kernighan (deras efternamn initialer födde namnet). Utvecklingen av awk stoppade inte där. En ny version introducerades 1985, som medförde nya ändringar i awk-kommandot, inklusive möjligheten att hantera flera ingångsströmmar, beräknade reguljära uttryck, användardefinierade funktioner och mycket mer! Kort sagt gjorde uppdateringen det till ett kraftfullare programmeringsspråk.
Awk har en annan implementering. För att säkerställa att det finns en korrekt implementering som erbjuder en standardmetod skrev Paul Rubin gawk 1986. Det fungerade bra med det nyare awk.
Bortsett från det, 1989 System V Release, tillkom nya funktioner. Utvecklarna förbättrade också sina mörka hörn, vilket gjorde det bättre för programmerare och användare att använda den. Den senaste förändringen hände 1997 när awk såg nätverksåtkomst - vilket gav användarna möjlighet att fjärrlösa problem.
Den senaste omskrivningen gjordes 2011 när John Haque skrev om gawk-internerna.
Saker du kan göra med AWK
Vid det här laget bör det vara klart vad AWK kan. Det är ett allmänt skriptspråk som låter dig hantera textbehandling. Avancerade användare kan också använda den för analys och rapportering.
AWK är inte som andra programmeringsspråk eftersom det är datadrivet snarare än ett procedurellt programmeringsspråk. Det betyder att du effektivt kan använda den för att utföra åtgärder mot textinmatning. Kort sagt, du kan använda den för att omvandla data, mata in dem och även skicka dem som standardutdata.
Kort sagt, du kan använda AWK för att göra enkla operationer som att dela upp varje inmatningsrad i fält, skanna en fil rad för rad, utföra en åtgärd (ar) på matchningslinjer och så vidare! Kommandot awk är också användbart för procedurformaterade rapporter och omvandlar datafiler. Dessutom får du också tillgång till programmeringskonstruktioner som villkorliga & slingor, sträng- och aritmetiska operationer och formatutgångslinjer.
Hur awk fungerar
I det här avsnittet ska vi lära oss hur awk fungerar. Det är viktigt att lära sig att awk har olika implementeringar. För att säkerställa att vi är på samma sida kommer vi att diskutera och använda GNU-implementeringen - som populärt kallas gawk. I de flesta fall är gawken symlinked till awk-tolk.
För att få en god förståelse måste vi först förstå posterna och fälten.
Det är välkänt att awk kan bearbeta textströmmar och datafiler. För att bearbeta data delas ingången i fält och poster. För att säkerställa att awk inte blir överväldigat bearbetas en post vid varje given tidpunkt tills ingångens slut nås. Dessutom delas posterna vidare i enkla sektioner med hjälp av en postavgränsare med tecken. Varje post separeras också med hjälp av newline-tecken. Detta innebär att varje rad kan betecknas som en post.
Du kan välja att ställa in en ny postavgränsare med hjälp av RS-variabeln.
Därefter kommer den arkiverade separatorn. Som vanligt har varje post fält och de separeras med hjälp av fältseparatorn. Fältavgränsaren kan vara mellanrum, flikar, nylinjetecken och mellanslag. Dessutom refereras till varje fält med symbolen $, medan fältnumret börjar med 1. Detta innebär att det första fältet kan betecknas som $ 1 medan det andra fältet betecknas som $ 2. På detta sätt kan det nte fältet betecknas som $ nf.
Det awk-programmet
Den andra aspekten av awk är awk-programmet. Om du vill arbeta med awk måste du skriva ett program som låter kommandot köra eller bearbeta texten. Awk-programmet erbjuder mycket funktionalitet med hjälp av regler och användardefinierade funktioner. Reglerna fungerar med åtgärdspar eller ett mönster, och reglerna separeras med hjälp av halvkolon eller newline.
Om du undrar kommer ett awk-program att se ut nedan.
mönster action mönster action ..
Kort sagt fungerar awk-programmet efter att matcha posterna baserat på mönster. Om mönstret finns i posten kommer det att bearbetas. Om inte, matchas hela posten för att se till att något matchar baserat på regler.
awk Kommandoexempel
Nu när vi har en god förståelse för awk-kommandot och hur det fungerar är det nu dags för oss att kolla in några av awk-kommandoexemplen.
Om du aldrig har använt awk förut kanske du vill veta att awk kan användas med alternativ som nedan:
awk option programfil
Alternativen som du kan använda med awk inkluderar följande:
- - f-fil: Den används för att ange filen som innehåller awk-skriptet
- -F fs: Den används för att specificera filavgränsaren.
- -v var = värde: Det används för att deklarera en variabel.
Exempel 1: Läs AWK-skript
Ett av de vanligaste sätten att använda awk är att läsa manus. Som Linux-användare kan du skapa ett awk-skript med hjälp av de enskilda offertmarkörerna.
För att göra det måste du skriva följande kommando i terminalen.
$ awk 'print "Välkommen till Hello, World - AWK-handledning"'
I exemplet ovan, vad du skriver, kommer det att returneras till själva skärmen. Kommandot fortsätter att köras tills du avslutar det genom att trycka på CTRL + D.
Exempel 2: Använda flera kommandon
En annan vanlig användning av awk är att använda flera kommandon. Som användare kanske du vill kombinera två awk-kommandon till ett för att få önskat resultat. I det här exemplet kommer vi att mata ut en sträng och sedan ersätta det andra ordet i strängen med ny ingång.
$ echo "Hello World" | awk '$ 2 = "Universe; skriv ut $ 0"'
I exemplet ovan ekade vi först ”Hello, World” till terminalen. Därefter sammanfogade vi ytterligare ett awk-kommando där vi ersatte det andra ordet med Universe - och sedan slutligen matade ut strängen, som är Hello Universe.
Exempel 3: Använd variabel
Med variabler kan du lagra information och komma åt dem. Om du har använt programmeringsspråk tidigare vet du säkert om dem. I händelse av awk använder du den för att bearbeta textfiler. Med hjälp av variablerna kan du komma åt vissa datafält i filen precis som nedan.
För detta ändamål skapade vi en ny textfil, mynewfile, där vi matar in några slumpmässiga men vackra rader.
Därefter måste du köra kommandot, som visas nedan.
awk 'print $ 1' minewfile
Som du kan se matar den ut den variabeln som visar det fältet från filen. Du bör också se felet som jag gjorde.
Exempel 4: AWK förbehandling
Med kommandot awk kan du lägga till förbehandling. För att göra detta måste du använda nyckelordet BÖRJA.
Om du läser noga skapade vi en ny fil ovan. Låt oss försöka använda awk förbehandling för att visa upp innehållet i filen.
Kommandot för det är som nedan.
awk 'awk BEGIN print "Innehållet i filen:"> print $ 0', mynewfile
Ovanstående skärmdump är inte korrekt. Jag använde "Börja" istället för "BEGIN", vilket är anledningen till att du inte ser att utskriftsuttrycket körs. Jag lämnar detta åt dig att prova och se hur ditt resultat går!
Exempel 5: Läsa skript från fil
Den här är knepig. Här kan du använda awk-skriptet för att läsa en fil.
Vi skapar ett nytt skript som innehåller följande.
skriv ut $ 1 "-universum börjar vid" $ 6 "
Vi sparade filen som ett tidningsskrift.
Kör nu följande kommando på terminalen.
$ awk -F: -f nyhetsskrift / etc / passwd
Fascinerande, eller hur!
Exempel 6: AWK efterbehandling
Därefter tittar vi på AWK efterbehandling. Det fungerar på samma sätt som förbehandling, men den här gången använder efterbehandlingen kommandot END.
$ awk 'BEGIN print "Filinnehållet börjar nu:">> print $ 0>> END print "Filen avslutas" "mynewfile
Exempel 7: Användardefinierade variabler
Du kan också använda variabler i kommandot awk utan att använda ett nummer eller dollartecken.
Nedan följer ett exempel.
$ awk 'BEGIN test = "Välkommen till FossLinux Awesome Linux Family" utskriftstest'
Exempel 8: Inbyggda funktioner
Awk-kommandona kommer också till nytta med sina inbyggda funktioner. Du kan till exempel använda matematiska funktioner och såväl som strängfunktioner.
$ awk 'BEGIN x - "fossLinux"; tryckknapp (x) '
$ awk 'BEGIN x = exp (35); skriv ut x '
Exempel 9: Formatera utskrift
Du kan också formatera den printf-funktion som följer med awk. Det finns många modifierare du kan använda. Du kan till exempel använda c för att skriva ut som en sträng; Du kan också använda d för ett heltal och så vidare.
$ awk 'BEGIN x = 200 * 200 printf "Resultatet är:% e \ n", x'
Exempel 10: Strukturerade kommandon
Du kan också använda strukturerade kommandon som om, annat, medan eller för loop. Låt oss se exemplet nedan för kommandot if.
$ awk 'if ($ 1> 20) skriv ut $ 2' mynewfile
Slutsats
Detta leder oss till slutet av vår tutorial för awk-kommando. Så tyckte du att det var användbart och ska du använda det för ditt arbete? Kommentera nedan och låt oss veta.