Lær Linux

Linux awk-kommando med 10 eksempler

Linux awk-kommando med 10 eksempler

Computersystemer har altid været brugt til at analysere værdifulde data, der er gemt i enkle tekstfiler. Til gengæld administreres computersystemer selv gennem logfiler. Hvad der potentielt er almindeligt i disse to situationer er, at de indeholder en stor mængde data, som ofte skal strømlines, inden de faktisk læser dataene; ellers er det bare forvirrende.

For eksempel, hvis du læser nogle data arrangeret i tabelform, vil du have nogle kolonner, du vil ikke have andre.

Dette krav var dybt selv tilbage på dagen, og derfor har GNU-projektet et fantastisk værktøj, der hjælper brugere med at filtrere og udtrække data for en bedre oplevelse. Dette værktøj er AWK.

Historie

AWK er faktisk et programmeringssprog, der er dedikeret til tekstbehandling. Det bruges til dataekstraktion i specifikke mønstre. Det blev udviklet i 1970'erne af Bell Labs, af Alfred Aho, Peter Weinberger og Brian Kernighan (deres efternavnes initialer fødte navnet). Udviklingen af ​​awk stoppede ikke der. En ny version blev introduceret i 1985, som bragte nye ændringer til awk-kommandoen, herunder evnen til at håndtere flere inputstrømme, beregnede regulære udtryk, brugerdefinerede funktioner og meget mere! Kort sagt gjorde opdateringen det til et mere kraftfuldt programmeringssprog.

Awk har en anden implementering. For at sikre, at der er en korrekt implementering, der tilbyder en standard tilgang, skrev Paul Rubin gawk i 1986. Det fungerede godt med det nyere awk.

Derudover blev System V Release i 1989 tilføjet nye funktioner. Udviklerne forbedrede også sine mørke hjørner, hvilket gjorde det bedre for programmører og brugere at bruge det. Den seneste ændring skete i 1997, da awk så netværksadgang - hvilket giver brugerne mulighed for at løse problemer eksternt.

Den seneste omskrivning udført i 2011, da John Haque omskrev gawk internals.

Ting du kan gøre med AWK

Nu skal det være noget klart, hvad AWK er i stand til. Det er et generelt script-sprog, der lader dig håndtere tekstbehandling. Avancerede brugere kan også bruge det til analyse og rapportering.

AWK er ikke som andre programmeringssprog, da det er datadrevet, snarere end et proceduremæssigt programmeringssprog. Det betyder, at du effektivt kan bruge det til at udføre handlinger mod tekstinput. Kort sagt kan du bruge det til at transformere data, indtaste dem og også sende dem som standardoutput.

Kort sagt kan du bruge AWK til at udføre enkle operationer, såsom at opdele hver inputlinje i felter, scanner en fil linje for linje, udføre en handling (er) på matchlinjer osv! Kommandoen awk er også nyttig til procedureformaterede rapporter og transformerer datafiler. Desuden får du også adgang til programmeringskonstruktioner såsom betingede & sløjfer, streng- og aritmetiske operationer og formatere outputlinjer.

Hvordan awk fungerer

I dette afsnit vil vi lære, hvordan awk fungerer. Det er vigtigt at lære, at awk har forskellige implementeringer. For at sikre, at vi er på samme side, vil vi diskutere og bruge GNU-implementeringen - som er populært kendt som gawk. I de fleste tilfælde er gawken symlinket til awk-tolken.

For at få en god forståelse skal vi først forstå optegnelser og felter.

Det er velkendt, at awk kan behandle tekststrømme og datafiler. For at behandle data er inddelingen opdelt i felter og optegnelser. For at sikre, at awk ikke bliver overvældet, behandles en post til enhver tid, indtil inputens slut er nået. Desuden er posterne yderligere opdelt i enkle sektioner ved hjælp af en pladeseparator ved hjælp af tegn. Hver post er også adskilt ved hjælp af newline-tegn. Dette betyder, at hver linje kan betegnes som en post.

Du kan vælge at indstille en ny pladeseparator ved hjælp af RS-variablen.

Dernæst kommer den arkiverede separator. Som normalt har hver post felter, og de adskilles ved hjælp af feltseparatoren. Feltadskilleren kan være mellemrum, faner, nye linjetegn og mellemrum. Der refereres også til hvert felt ved hjælp af $ symbolet, mens feltnummeret starter med 1. Dette betyder, at det første felt kan betegnes som $ 1, mens det andet felt betegnes som $ 2. På denne måde kan det nende felt betegnes som $ nf.

Awk-programmet

Det andet aspekt af awk er awk-programmet. Hvis du vil arbejde med awk, skal du skrive et program, der lader kommandoen udføre eller behandle teksten. Awk-programmet tilbyder en masse funktionalitet ved hjælp af regler og brugerdefinerede funktioner. Reglerne fungerer med handlingspar eller et mønster, og reglerne adskilles ved hjælp af semikolon eller newline.

Hvis du undrer dig, vil et awk-program se ud som nedenfor.

mønster handling mønster handling .. 

Kort sagt fungerer awk-programmet efter at matche optegnelserne baseret på mønstre. Hvis mønsteret findes i posten, behandler det det. Hvis ikke, matches hele posten for at sikre, at noget matcher baseret på regler.

awk Kommandoeksempler

Nu hvor vi har en god forståelse af awk-kommandoen, og hvordan den fungerer, er det nu tid for os at tjekke nogle af awk-kommandoeksemplerne.

Hvis du aldrig har brugt awk før, vil du måske vide, at awk kan bruges med muligheder som nedenfor:

awk optioner programfil

De muligheder, du kan bruge med awk, inkluderer følgende:

Eksempel 1: Læs AWK-scripts

En af de mest almindelige måder at bruge awk er at læse scripts. Som Linux-bruger kan du oprette et awk-script ved hjælp af de enkelte anførselstegn.

For at gøre det skal du skrive følgende kommando i terminalen.

$ awk 'print "Velkommen til Hello, World - AWK tutorial"'

I ovenstående eksempel, hvad du skriver, returneres det til selve skærmen. Kommandoen fortsætter med at udføre, indtil du afslutter den ved at trykke på CTRL + D.

Eksempel 2: Brug af flere kommandoer

En anden almindelig brug af awk er at bruge flere kommandoer. Som bruger kan du kombinere to awk-kommandoer til en for at få det ønskede resultat. I dette eksempel udsender vi en streng og erstatter derefter det andet ord i strengen med ny input.

$ echo "Hello World" | awk '$ 2 = "Univers; udskriv $ 0"'

I ovenstående eksempel gentog vi først ”Hello, World” til terminalen. Dernæst sammenkædede vi en anden awk-kommando, hvor vi erstattede det andet ord med Universe - og derefter endelig udgav strengen, som er Hello Universe.

Eksempel 3: Brug af variabel

Variabler giver dig mulighed for at gemme oplysninger og få adgang til dem. Hvis du har brugt programmeringssprog før, ved du helt sikkert om dem. I tilfælde af awk bruger du det til at behandle tekstfiler. Ved hjælp af variablerne kan du få adgang til bestemte datafelter i filen som nedenfor.

Til dette formål oprettede vi en ny tekstfil, mynewfile, hvor vi indtaster nogle tilfældige, men smukke linjer.

Dernæst skal du køre kommandoen som vist nedenfor.

awk 'udskriv $ 1' minewfile

Som du kan se, udsender den den pågældende variabel, der viser det felt fra filen. Du skal også se den fejl, jeg lavede.

Eksempel 4: AWK forbehandling

Med kommandoen awk kan du tilføje forbehandling. For at gøre det skal du bruge BEGIN-nøgleordet.

Hvis du læser omhyggeligt, oprettede vi en ny fil ovenfor. Lad os prøve at bruge awk-forbehandling til at fremvise indholdet af filen.

Kommandoen for det er som nedenfor.

awk 'awk BEGIN print "Indholdet af filen:"> print $ 0', mynewfile

Ovenstående eksempelbillede er ikke korrekt. Jeg brugte "Begin" i stedet for "BEGIN", hvorfor du ikke kan se udskriftserklæringen udføre. Jeg overlader dette til dig at prøve og se, hvordan dit resultat går!

Eksempel 5: Læsning af script fra fil

Denne er vanskelig. Her kan du bruge awk-scriptet til at læse en fil.

Vi opretter et nyt script, der indeholder følgende.

udskriv $ 1 "-univers starter ved" $ 6 "

Vi gemte filen som et avis.

Kør nu følgende kommando på terminalen.

$ awk -F: -f nyhedsskrift / etc / passwd

Fascinerende, ikke sandt!

Eksempel 6: AWK efterbehandling

Dernæst ser vi på efterbehandlingen af ​​AWK. Det fungerer svarende til forbehandling, men denne gang bruger efterbehandlingen kommandoen END.

$ awk 'BEGIN print "Filindholdet starter nu:">> print $ 0>> END print "Filen slutter"' mynewfile

Eksempel 7: Brugerdefinerede variabler

Du kan også bruge variabler inden for kommandoen awk uden at bruge et tal eller dollartegn.

Nedenfor er et eksempel.

$ awk 'BEGIN test = "Velkommen til FossLinux Awesome Linux Family" print test'

Eksempel 8: Indbyggede funktioner

Awk-kommandoerne er også nyttige med deres indbyggede funktioner. For eksempel kan du bruge matematiske funktioner og samt strengfunktioner.

$ awk 'BEGIN x - "fossLinux"; udskrivningstoupper (x) '
$ awk 'BEGIN x = exp (35); udskriv x '

Eksempel 9: Formatering af udskrivning

Du kan også formatere den printf-funktion, der følger med awk. Der er mange modifikatorer, du kan bruge. For eksempel kan du bruge c til at udskrive som en streng; Du kan også bruge d til et heltalsværdi osv.

$ awk 'BEGIN x = 200 * 200 printf "Resultatet er:% e \ n", x'

Eksempel 10: Strukturerede kommandoer

Du kan også bruge strukturerede kommandoer, som hvis, ellers, mens eller til loop. Lad os se nedenstående eksempel for if-kommandoen.

$ awk 'if ($ 1> 20) udskriv $ 2' minewfile

Konklusion

Dette fører os til slutningen af ​​vores awk-kommandovejledning. Så fandt du det nyttigt, og vil du bruge det til dit arbejde? Kommenter nedenfor og lad os vide.

Mus Efterlig museklik ved at svæve ved hjælp af Clickless Mouse i Windows 10
Efterlig museklik ved at svæve ved hjælp af Clickless Mouse i Windows 10
Brug af en mus eller et tastatur i den forkerte kropsholdning af overdreven brug kan resultere i mange sundhedsmæssige problemer, herunder stamme, kar...
Mus Føj musbevægelser til Windows 10 ved hjælp af disse gratis værktøjer
Føj musbevægelser til Windows 10 ved hjælp af disse gratis værktøjer
I de senere år har computere og operativsystemer udviklet sig meget. Der var et tidspunkt, hvor brugerne skulle bruge kommandoer til at navigere genne...
Mus Styr og administrer musebevægelse mellem flere skærme i Windows 10
Styr og administrer musebevægelse mellem flere skærme i Windows 10
Dual Display Mouse Manager lader dig kontrollere og konfigurere musebevægelse mellem flere skærme ved at bremse dens bevægelser nær grænsen. Windows 1...