Awk er et skriptspråk som brukes for å manipulere data og generering av rapporter.Den awk kommando programmeringsspråk krever ingen kompilering, og tillater brukeren å bruke variabler, numeriske funksjoner, string funksjoner, og logiske operatorer.

Awk er et verktøy som gjør det mulig for programmerere å skrive små, men effektive programmer i form av uttalelser som kan angi tekstmønstrene som er som det skal søkes etter i hver linje i et dokument, og handlingen som skal tas når en kamp er funnet innenfor en linje., Awk er mest brukt mønster for skanning og behandling. Den søker en eller flere filer, for å se om de inneholder linjer som stemmer med den angitte mønstre og deretter utfører den tilknyttede handlinger.

Awk er forkortet fra navnene på utviklere – Aho, Weinberger, og Kernighan.

HVA KAN VI GJØRE MED AWK ?

1. AWK Virksomhet:
(a) Skanner en fil, linje for linje
(b) Deler hver inngang linje i felt
(c) Sammenligner innspill linje/felt til mønster
(d) Utfører handlingen(e) på matchet linjer

2., Nyttig For:
(a) overføre data filer
(b) Produsere formaterte rapporter

3. Programmering Konstruksjoner:
(a) Format output linjer
(b) Matematikk og streng drift
(c) Conditionals og looper

Syntaks:

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

Valg:

-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

Eksempel Kommandoer

Eksempel:
du Vurdere følgende tekst-fil som input filen for alle tilfeller 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 oppførsel av Awk : standard Awk skriver ut hver linje av data fra den angitte filen.,

$ 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 eksemplet over, ingen mønster er gitt. Så handlinger er gjeldende for alle linjene. Handling ut uten noe argument skriver ut hele linjen som standard, slik at det skriver ut alle linjer i filen uten feil.

2. Skriv ut de linjene som samsvarer med den som er gitt mønster.

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

Output:

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

I eksemplet over, awk-kommandoen skriver ut alle linjer som samsvarer med de ‘manager’.

3., Dele en Linje I Felt : For hver oppføring i.e-line, awk kommandoen deler rekorden avgrenset av blanke tegn som standard, og lagrer den i $n variable. Hvis linjen har 4 ord, vil den lagres i $1, $2, $3 og $4 henholdsvis. Også, $0 representerer hele linjen.

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

Output:

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

I eksempelet ovenfor, $1 og $4 representerer Navn og Lønn felt henholdsvis.,

Bygget I Variabler I Awk

Awk ‘ s innebygde variabler inkluderer feltet variabler—$1, $2, $3, og så videre ($0 er hele linjen) — som kan bryte en linje av tekst i enkelte ord eller stykker kalt felt.

NR: NR kommando holder en løpende telling av antall input-poster. Husk at postene er vanligvis linjer. Awk kommando utfører mønster/action uttalelser én gang for hver oppføring i en fil.

NF: NF-kommandoen holder en opptelling av antall felt innen den gjeldende inngangen spille inn.,

FS: FS kommandoen inneholder feltet skilletegn som er brukt for å skille feltene på input line. Standard er «white space», som betyr plass og tab-tegn. FS kan tilordnes på nytt til en annen karakter (vanligvis BEGYNNER) for å endre feltet skilletegn.

RS: RS kommandoen lagrer den gjeldende posten skilletegn. Siden standard, en inngang linje er inngang spille inn, standard spille inn skilletegn er en newline.

AVS: AVS kommandoen lagrer output feltet skilletegn, som skiller feltene når Awk skriver dem ut. Standard er en tom plass., Når utskriften er flere parametere som atskilt med komma, vil den skrive ut verdien av AVS i mellom hver parameter.

OR: OR kommandoen lagrer output spille inn skilletegn, som skiller utgang linjer når Awk skriver dem ut. Standard er en newline karakter. skriv ut automatisk utganger innholdet av OR på slutten av hva det er gitt for å skrive ut.,

Eksempel:

Bruk av NR innebygde variabler (Vis linjenummer)

$ 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 eksemplet over, awk kommando med NR skrive ut alle linjene sammen med linjenummer.

Bruk av NF innebygde variabler (Vis Siste-Feltet)

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

Output:

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

I eksemplet over $1 representerer Navn og $NF representerer Lønn. Vi kan få Lønn ved hjelp av $NF , der $NF representerer siste feltet.,

en Annen bruk av NR innebygde variabler (Display Linje 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 gitt tekst-fil:

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

1) for Å skrive ut det første elementet sammen med rad nummer(NR) skilt med » – » fra hver linje i geeksforgeeks.txt:

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

2) for Å gå tilbake til den andre raden/element fra geeksforgeeks.,est linje til stede i filen:

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

5) til Å telle linjer i en fil:

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

6) Utskrift linjer med mer enn 10 tegn:

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

7) for Å finne/se etter en tekststreng i noen bestemt kolonne:

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

8) for Å skrive ut kvadratene av første tallene fra 1 til n si 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 artikkelen er levert av Anshika Goyal og Praveen Negi., Hvis du liker GeeksforGeeks og ønsker å bidra, kan du også skrive en artikkel med contribute.geeksforgeeks.org eller e-post artikkelen din til [email protected]. Se artikkelen din vises på den GeeksforGeeks hovedsiden og hjelpe andre Geeks.

Articles

Legg igjen en kommentar

Din e-postadresse vil ikke bli publisert. Obligatoriske felt er merket med *