a .k er et scriptsprog, der bruges til at manipulere data og generere rapporter.A .k-kommandoprogramsproget kræver ingen kompilering og giver brugeren mulighed for at bruge variabler, numeriske funktioner, strengfunktioner og logiske operatører.

Awk er et hjælpeprogram, der gør det muligt for en programmør til at skrive små, men effektive programmer i form af udsagn, som definerer tekst mønstre, der skal søges efter i hver linje i et dokument, og de foranstaltninger, der skal træffes, når der findes et match inden for en linje., A .k bruges mest til mønster scanning og behandling. Den Søger en eller flere filer for at se, om de indeholder linjer, der matcher med de angivne mønstre og derefter udfører de tilknyttede handlinger.

a .k er forkortet fra navnene på udviklerne – Aho, Aheinberger og Kernighan.

hvad kan vi gøre med A ?k ?

1. AWK-Operationer:
(a) Scanner en fil linje for linje
(b) Opdeler hver input-linjen i felter
(c) Sammenligner input linje/felter, der skal mønster
(d) Udfører handlingen(s) på matchet linjer

2., Nyttigt for:
(a) Transform datafiler
(b) Fremstil formaterede rapporter

3. Programmering Konstruktioner:
(a), Formatér output i linjer,
(b) Regning og string operationer
(c) Betingelser og løkker

Syntaks:

awk options 'selection _criteria {action }' input-file > output-file

Funktioner:

-f program-file : Reads the AWK program source from the file program-file, instead of from the first command line argument.-F fs : Use fs for the input field separator

eksempler på Kommandoer

Eksempel:
Overvej følgende tekst fil som inddata filen for alle cases nedenfor.

$cat > employee.txt 
ajay manager account 45000sunil clerk account 25000varun manager sales 50000amit manager account 47000tarun peon sales 15000deepak clerk sales 23000sunil peon sales 13000satvik director purchase 80000 

1. Standard opførsel af A .k: som standard A .k udskriver hver linje af data fra den angivne fil.,

$ awk '{print}' employee.txt

Output:

ajay manager account 45000sunil clerk account 25000varun manager sales 50000amit manager account 47000tarun peon sales 15000deepak clerk sales 23000sunil peon sales 13000satvik director purchase 80000 

I ovenstående eksempel, intet mønster er givet. Så handlingerne gælder for alle linjerne. Action print uden noget argument udskriver hele linjen som standard, så den udskriver alle linjerne i filen uden fejl.

2. Udskriv de linjer, der matcher med det givne mønster.

$ awk '/manager/ {print}' employee.txt 

Output:

ajay manager account 45000varun manager sales 50000amit manager account 47000 

I ovenstående eksempel, awk kommando udskriver alle den linje, der matcher med ‘manager’.

3., Opdeling af en linje i felter: for hver post, dvs. linje, opdeler a .k-kommandoen den post, der er afgrænset af whithitespace-karakter som standard, og gemmer den i $n-variablerne. Hvis linjen har 4 ord, gemmes den i henholdsvis $1, $2, $3 og $ 4. Også $ 0 repræsenterer hele linjen.

$ awk '{print $1,$4}' employee.txt 

Output:

ajay 45000sunil 25000varun 50000amit 47000tarun 15000deepak 23000sunil 13000satvik 80000 

I ovenstående eksempel, $1 og $4 repræsenterer Navn og Løn felter hhv.,

indbyggede variabler i A Variablesk

Akks indbyggede variabler omfatter feltvariablerne—$1, $2, $3, og så videre ($0 er hele linjen) – der bryder en tekstlinje i individuelle ord eller stykker kaldet felter.

NR: nr kommando holder en aktuel optælling af antallet af input poster. Husk, at poster normalt er linjer. A .k kommando udfører mønster/handling udsagn oncen gang for hver post i en fil.

NF: NF kommando holder en optælling af antallet af felter i den aktuelle input rekord.,

FS: FS-kommandoen indeholder feltseparatortegnet, som bruges til at opdele felter på inputlinjen. Standarden er “hvidt mellemrum”, hvilket betyder mellemrum og tabulatortegn. FS kan tildeles til et andet tegn (typisk i begynd) for at ændre feltudskilleren. rs: rs-kommandoen gemmer det aktuelle postseparatorkarakter. Da en inputlinje som standard er inputposten, er standardpostseparatorkarakteren en ny linje.

OFS: OFS kommando gemmer output felt separator, som adskiller felterne, når A .k udskriver dem. Standard er et tomt mellemrum., Når print har flere parametre adskilt med kommaer, vil det udskrive værdien af OFS i mellem hver parameter. ORS: ORS kommando gemmer output record separator, som adskiller output linjer, når a .k udskriver dem. Standard er et ne .line-tegn. print udsender automatisk indholdet af ORS i slutningen af hvad det er givet til at udskrive.,

Eksempler:

Brug af NR indbyggede variable (Linie i Displayet Antal)

$ awk '{print NR,$0}' employee.txt 

Output:

1 ajay manager account 450002 sunil clerk account 250003 varun manager sales 500004 amit manager account 470005 tarun peon sales 150006 deepak clerk sales 230007 sunil peon sales 130008 satvik director purchase 80000 

I ovenstående eksempel, awk kommando med NR udskriver alle de linjer, der sammen med linje nummer.

Brug af NF indbyggede variable (Display Sidste Felt)

$ awk '{print $1,$NF}' employee.txt 

Output:

ajay 45000sunil 25000varun 50000amit 47000tarun 15000deepak 23000sunil 13000satvik 80000 

I ovenstående eksempel $1 repræsenterer Navn og $NF repræsenterer Løn. Vi kan få lønnen ved hjælp af $NF , hvor $NF repræsenterer sidste felt.,

en Anden brug af NR indbyggede variable (Linie Fra 3 til 6)

$ awk 'NR==3, NR==6 {print NR,$0}' employee.txt 

Output:

3 varun manager sales 500004 amit manager account 470005 tarun peon sales 150006 deepak clerk sales 23000 

Flere Eksempler

For den givne tekst-fil:

$cat > geeksforgeeks.txtA B CTarun A12 1Man B6 2Praveen M42 3

1) for At udskrive den første vare sammen med den række, nummer(NR.) adskilt med ” – ” fra hver linje i geeksforgeeks.txt:

$ awk '{print NR "- " $1 }' geeksforgeeks.txt
1 - Tarun2 – Manav 3 - Praveen

2) At returnere den anden række/item fra geeksforgeeks.,est linje er til stede i filen:

$ awk '{ if (length($0) > max) max = length($0) } END { print max }' geeksforgeeks.txt
13

5) til At tælle linjer i en fil:

$ awk 'END { print NR }' geeksforgeeks.txt
3

6) Udskrivning linjer med mere end 10 tegn:

$ awk 'length($0) > 10' geeksforgeeks.txt
Tarun A12 1Praveen M42 3

7) for At finde/tjekke for enhver streng i nogen bestemt kolonne:

$ awk '{ if($3 == "B6") print $0;}' geeksforgeeks.txt

8) for At udskrive pladser i første numre fra 1 til n sige 6:

$ awk 'BEGIN { for(i=1;i<=6;i++) print "square of", i, "is",i*i; }'
square of 1 is 1square of 2 is 4square of 3 is 9square of 4 is 16square of 5 is 25square of 6 is 36

Denne artikel er bidraget ved Anshika Goyal og Praveen Negi., Hvis du kan lide GeeksforGeeks og vil gerne bidrage, du kan også skrive en artikel med contribute.geeksforgeeks.org eller mail din artikel til [email protected]. Se din artikel, der optræder på GeeksforGeeks vigtigste side og hjælpe andre Nørder.

Articles

Skriv et svar

Din e-mailadresse vil ikke blive publiceret. Krævede felter er markeret med *