Mange verktøy verktøy finnes i Linux-systemet for å søke og du vil generere en rapport fra tekst data eller fil. Brukeren kan enkelt utføre mange typer søk, skifte og rapport generering av oppgaver ved hjelp av awk, grep og sed-kommandoer. awk er ikke bare en kommando. Det er et skriptspråk som kan brukes fra både terminal og awk-fil. Den støtter variabel, betinget utsagn, array, løkker etc. som andre skriptspråk., Det kan du lese en fil innhold linje for linje og separat felt eller kolonner basert på en bestemt skilletegn. Det har også støtte for regulære uttrykk for å søke spesielt streng i teksten innhold eller fil, og tar handlinger hvis en kamp founds. Hvordan du kan bruke awk kommando og manus som er vist i denne opplæringen ved hjelp av 20 nyttige eksempler.,en

  • awk med csv-data
  • awk regex
  • awk mellom store og små bokstaver regex
  • awk med nf (antall felt) variabel
  • awk gensub () – funksjonen
  • awk med rand() funksjon
  • awk brukerdefinert funksjon
  • awk hvis
  • awk variabler
  • awk-systemer
  • awk loop
  • awk for å skrive ut den første kolonnen
  • awk å skrive ut den siste kolonnen
  • awk med grep
  • awk med bash-script-fil
  • awk med sed
  • ved Hjelp av awk med printf

    printf () – funksjonen brukes til å formatere alle utgang i de fleste programmeringsspråk., Denne funksjonen kan brukes med awk-kommandoen til å generere ulike typer formatert utganger. awk-kommandoen i hovedsak brukes til hvilken som helst tekstfil. Opprette en tekst-fil med navnet ansatt.txt med innhold som er gitt nedenfor der feltene er adskilt med kategorien (‘\t’).

    ansatte.txt –

    – >

    1001 John sena 40000
    1002 Jafar Iqbal 60000
    1003 Meher Nigar 30000
    1004 Jonny Leveren 70000

    følgende awk-kommandoen vil lese data fra ansatte.txt-fil, linje for linje og skriv ut den første arkivert etter formatering. Her, «% – 10s\n» betyr at produksjonen vil være 10 tegn., Hvis verdien av produksjonen er mindre enn 10 tegn deretter mellomrom vil bli lagt til på forsiden av verdi.

    $ awk ‘{ printf «% – 10s\n», $1 }’ medarbeider.txt

    Output:

    Gå til Innhold

    awk å dele på white space

    standard word eller feltet skilletegn for splitting tekst er tomrom. awk-kommandoen kan ta tekst verdi som input i ulike måter. Input av tekst er gått fra echo-kommandoen i følgende eksempel., Teksten «jeg liker programmering» vil bli delt med standard skilletegn, plass, og det tredje ordet vil bli skrevet ut som output.

    $ echo ‘jeg liker programmering’ | awk ‘{ print $3 }’

    Output:

    Gå til Innhold

    awk å endre skilletegnet

    awk-kommandoen kan brukes til å endre skilletegnet for en hvilken som helst fil innhold. La oss anta at du har en tekst-fil med navnet telefonen.txt med følgende innhold der ‘:’ er brukt som feltet skilletegn av filens innhold.

    telefonen.,txt –

    – >

    +123:334:889:778
    +880:1855:456:907
    +9:7777:38644:808

    Kjør følgende awk-kommandoen til å endre skilletegnet, ‘:’ av ‘-‘ til innholdet av filen, telefon.txt.

    $ cat telefonen.txt
    $ awk ‘$1=$1’ FS=»:» AVS=»-» telefonen.txt

    Output:

    Gå til Innhold

    awk med tabulatordelt data

    awk-kommandoen har mange innebygde variabler som brukes til å lese tekst på ulike måter. To av dem er FS og AVS., FS er input-feltet skilletegn og AVS er utgang feltet skilletegn variabler. Bruk av disse variablene er vist i denne seksjonen. Opprette en tab-separert fil som heter inngang.txt med følgende innhold for å teste bruker av FS og AVS variabler.

    Input.txt –

    – >

    Klient-side scripting language
    Server-side scripting language
    Database-Server
    Web-Server

    ved Hjelp av FS-variabel med fane

    følgende kommando vil splitte hver linje i input.txt-fil basert på fanen (‘\t’), og skriv ut den første feltet på hver linje.,

    $ awk ‘{ print $1 }’ FS=’\t’ input.txt

    Output:

    Bruk av AVS variabel med fane

    følgende awk-kommandoen vil skrive ut den 9. og 5. felt av ‘ls -l’ kommando ut med tab separator etter å ha skrevet ut kolonnen tittelen «Navn» og «Størrelse». Her, AVS variabelen er brukt til å formatere produksjon av kategorien.,

    $ ls -l
    $ ls -l | awk -v AVS=’\t’ ‘BEGIN { printf «%s\t%s\n», «Name», «Size»} {print $9,$5}’

    Output:

    Gå til Innhold

    awk med CSV-data

    innholdet i CSV-filen kan analyseres på flere måter ved hjelp av awk-kommandoen. Opprette en CSV-fil som heter » kunde.csv’ med følgende innhold for å bruke awk-kommandoen.

    kunden.txt

    Lesing enkelt felt i CSV-filen

    ‘-F’ tilleggsutstyret brukes med awk-kommandoen til å angi skilletegn for splitting hver linje i filen., Følgende awk-kommandoen vil skrive ut navn-feltet for kunden.csv-filen.

    $ cat kunden.csv
    $ awk -F «,» ‘{print $2}’ kunde.csv

    Output:

    Lese flere felt ved å kombinere med annen tekst

    denne kommandoen skriver ut de tre feltene av kunden.csv-ved å kombinere tittel, tekst, Navn, E-post og Telefon. Den første linjen av kunden.csv-filen inneholder tittelen på hvert felt. NR variabel som inneholder linjen antall filen når awk kommando analyserer fil., I dette eksemplet NR variabelen brukes til å utelate den første linjen i filen. Produksjonen vil vise 2., 3. og 4. felt av alle gevinstlinjer, bortsett fra den første linjen.

    $ awk -F «,» ‘NN>1 {print «Navn:» $2 «, E-post:» $3 «, Telefonen:» $4}’ kunde.csv

    Output:

    Lese CSV-fil ved hjelp av en awk script

    awk skript kan kjøres ved å kjøre awk-fil. Hvordan kan du lage awk-filen og kjør filen er vist i dette eksempelet. Opprett en fil som heter awkcsv.awk med følgende kode., BEGYNNER søkeord brukes i script for å informere awk-kommandoen til å kjøre scriptet til den BEGYNNER delen først før du utfører andre oppgaver. Her er feltet skilletegn (FS) er brukt for å definere splitting skilletegn og 2. og 1. feltene vil bli trykt i henhold til formatet som brukes i printf () – funksjonen.

    awkcsv.awk
    BEGIN {FS = «,»} {printf «%5s(%s)\n», $2,$1}

    Kjør awkcsv.awk-fil med innholdet av kunden.csv-fil med følgende kommando.

    $ awk -f awkcsv.awk kunden.,csv

    Output:

    Gå til Innhold

    awk regex

    Det vanlige uttrykket er et mønster som er brukt for å søke hvilken som helst streng i en tekst. Ulike typer komplisert å søke og erstatte oppgaver kan gjøres svært enkelt ved hjelp av regulære uttrykk. Noen enkle bruker det vanlige uttrykket med awk-kommandoen er vist i denne seksjonen.

    tegnsettet

    følgende kommando vil matche ordet Lure eller bool eller Kule med input string og skrive ut hvis ordet founds., Her, Dukke vil ikke passer, og ikke ut.

    $ printf «Lure\nCool\nDoll\nbool» | awk ‘/verktøy/’

    Output:

    Søker streng i starten av linjen

    ‘^’ – symbolet brukes i vanlig uttrykk å søke hvilken som helst mønster ved starten av linjen. ‘Linux’ ord søkes ved starten av hver linje av tekst i følgende eksempel. Her er to linjer som begynner med teksten, ‘Linux’ og de to linjene vil bli vist i utgang.,

    $ echo -e «Linux er gratis å bruke\n Det er en åpen-kilde programvare\nLinuxHint er
    en populær blogg» | awk ‘/^Linux/’

    Output:

    Søker streng på slutten av linjen

    ‘$’ – symbolet brukes i vanlig uttrykk å søke hvilken som helst mønster på slutten av hver linje av teksten. ‘Script’ ord er søkt i følgende eksempel. Her er to linjene inneholder ordet, Script på slutten av linjen.,

    $ echo -e «PHP-Script\nJavaScript\nVisual Programmering» | awk ‘/Script$/’

    Output:

    Søker ved å utelate bestemte tegnsett

    ‘^’ – symbolet indikerer starten av teksten når det er brukt i front av en hvilken som helst streng mønster (‘/^…/’) eller før tegnsett som er erklært av ^. Hvis ‘ ^ ‘ – symbolet er brukt i den tredje brakett, så er definert tegnsett inne i kabinettet vil være utelatt på tidspunktet for søket., Følgende kommando vil søke hvilket som helst ord som ikke starter med ‘F’, men slutter med ‘verktøy’. Kule og bool vil bli trykt i henhold til mønster og tekst data.

    $ printf «Lure\nCool\nDoll\nbool» | awk ‘/verktøy/’

    Output:

    Gå til Innhold

    awk mellom store og små bokstaver regex

    standard regulære uttrykk som ikke mellom store og små bokstaver søk når du søker etter noe mønster i strengen. Mellom store og små bokstaver søk kan gjøres ved awk-kommando med regulære uttrykk., I følgende eksempel, tolower () – funksjonen brukes til å gjøre mellom store og små bokstaver søk. Her vil det første ordet i hver linje av skriving vil bli konvertert til små bokstaver ved å bruke tolower () – funksjonen, og samsvarer med regulære uttrykk. toupper () – funksjonen kan også brukes for dette formål, i dette tilfellet, mønsteret må være definert av alle store bokstaver. Teksten er definert i følgende eksempel inneholder søke ord, ‘web’ i to linjer som vil bli skrevet ut som output.,

    $ echo -e «Web Design\nweb utvikling\nFramework» | awk ‘tolower (usd 0) ~ /^web/;’

    Output:

    Gå til Innhold

    awk med NF (antall felt) variabel

    NF er en innebygd variabel av awk kommando som brukes til å telle det totale antall felt i hver linje av skriving. Opprette en tekst-fil med flere linjer og flere ord. innspill.txt-fil er brukt her som er opprettet i forrige eksempel.,

    ved Hjelp av NF fra kommandolinjen

    Her, den første kommandoen brukes til å vise innholdet av input.txt-fil, og andre kommandoen brukes for å vise det totale antall felt i hver linje i filen ved hjelp av NF-variabelen.

    $ cat-inngang.txt
    $ awk ‘{print NF}’ – inngang.txt

    Output:

    ved Hjelp av NF i awk-fil

    Opprette en awk fil som heter teller.awk med skriptet er gitt nedenfor. Når dette skriptet skal kjøre med tekst data da hver linje innhold med totalt felt vil bli skrevet ut som output.

    teller.,awk

    {print $0}
    {print «»}

    Kjør skriptet ved følgende kommando.

    $ awk -f teller.awk-inngang.txt

    Output:

    Gå til Innhold

    awk gensub () – funksjonen

    getsub() er en erstatning funksjon som brukes til å søke string basert på spesielle skilletegn eller regulære uttrykk. Denne funksjonen er definert i ‘gawk’ pakke som ikke er installert som standard. Syntaksen for denne funksjonen er gitt nedenfor., Den første parameteren inneholder regulære uttrykk eller søke skilletegn, den Andre parameteren inneholder den nye teksten, den tredje parameteren angir hvordan søk vil bli gjort, og den siste parameteren inneholder tekst som denne funksjonen vil bli brukt.

    Syntaks:

    gensub(regexp, erstatning, hvordan )

    Kjør følgende kommando for å installere gawk-pakke for å bruke getsub () – funksjonen med awk-kommandoen.

    $ sudo apt-get install gawk

    Opprette en tekstfil med navnet » salesinfo.,txt » med følgende innhold til å praktisere dette eksemplet. Her feltene er adskilt med en kategori.

    salesinfo.txt –

    – >

    Mon 700000
    Tue 800000
    Wed 750000
    Thu 200000
    Fri 430000
    Sat 820000

    Kjør følgende kommando for å lese den numeriske felt av salesinfo.txt-fil, og skrive ut summen av alle salg beløp. Her, den tredje parameteren, ‘G’ angir den globale søk. Det betyr at mønsteret vil bli søkt i hele innholdet i filen.,

    $ awk ‘{ x=gensub(«\t»,»»,»G»,$2); printf x «+» } END{ print 0 }’ salesinfo.txt | bc -l

    Output:

    Gå til Innhold

    awk med rand () – funksjonen

    rand () – funksjonen brukes til å generere tilfeldige tall større enn 0 og mindre enn 1. Så, det vil alltid generere en brøk tall mindre enn 1. Følgende kommando vil generere en brøk tilfeldig nummer og multiplisere verdien med 10 for å få et tall større enn 1., En brøk nummer med to sifre etter desimaltegnet vil bli skrevet ut for å søke printf () – funksjonen. Hvis du kjører følgende kommando flere ganger så vil du få forskjellige ut hver gang.

    $ awk ‘BEGIN {printf «Nummeret er =%.2f\n» , rand()*10}’

    Output:

    Gå til Innhold

    awk brukerdefinert funksjon

    Alle funksjoner som er brukt i de tidligere eksemplene er innebygde funksjoner. Men du kan deklarere en brukerdefinert funksjon i din awk script for å gjøre en bestemt oppgave., La oss anta at du vil opprette en egendefinert funksjon for å beregne arealet av et rektangel. For å gjøre denne oppgaven, kan du opprette en fil som heter » område.awk’ med følgende skript. I dette eksemplet er en brukerdefinert funksjon navngitt område() er angitt i skriptet som beregner området basert på input parametere og gir området verdi. getline kommandoen brukes her til å ta input fra brukeren.

    området.awk

    Kjøre skriptet.

    $ awk -f området.,awk

    Output:

    Gå til Innhold

    awk hvis eksempel

    awk støtter betinget utsagn som andre standard programmeringsspråk. Tre typer av if-setningene er vist i denne seksjonen ved å bruke tre eksempler. Opprette en tekst-fil med navnet elementer.txt med følgende innhold.

    – elementer.txt –

    – >

    HDD Samsung $100
    Mus A4Tech
    Skriveren HP $200

    Enkelt hvis eksempel:

    han følgende kommando vil lese innholdet i elementene.txt-fil, og sjekk 3. felt verdi i hver linje., Hvis verdien er tom, så vil det skrives ut en feilmelding med linjenummer.

    $ awk ‘{ if ($3 == «») print «Pris feltet mangler i linjen» NR }’ elementer.txt

    Output:

    om-annet eksempel:

    denne kommandoen skriver ut elementet pris hvis den 3. feltet eksisterer i linjen, ellers vil det skrives ut en feilmelding.

    $ awk ‘{ if ($3 == «») print «Pris feltet mangler»
    annet print «antall pris er» $3 }’ elementer.,txt

    Output:

    if-else-hvis eksempel:

    Når du følgende kommando vil kjøre fra terminalen deretter vil det ta input fra brukeren. Inndata verdi vil bli sammenlignet med hver enkelt om tilstanden til condition er sann. Hvis noen betingelse blir oppfylt så vil det skrive ut den aktuelle klasse. Hvis input verdi ikke samsvarer med noen tilstand så vil det skrive ut mislykkes.,

    $ awk ‘BEGIN { print «skriv Inn et merke:»
    getline mark < «-«
    hvis (mark >= 90) print «A+»
    else if( mark >= 80) skrive ut «A»
    else if( mark >= 70) print «B+»
    annet print «ikke bestått» }’

    Output:

    Gå til Innhold

    awk variabler

    erklæringen av awk variabelen er lik erklæringen av skallet variabel. Det er en forskjell i lesing verdien av variabelen., ‘$’- symbolet brukes med variabelnavnet for skallet variabel for å lese verdi. Men det er ikke nødvendig å bruke ‘$’ med awk variabel for å lese verdi.

    ved Hjelp av enkle variable:

    følgende kommando vil deklarere en variabel kalt «nettstedet» og en string-verdi er tilordnet den variabelen. Verdien av variabelen er trykt i neste setning.

    $ awk ‘BEGIN{ site=»LinuxHint.,com»; print nettstedet}’

    Output:

    ved Hjelp av en variabel til å hente data fra en fil

    følgende kommando vil søke på ordet «Skriver» i filen elementer.txt. Hvis en linje av filen starter med ‘Skriver’ så vil det lagre verdien av 1., 2. og 3. felt inn i tre variabler. navn og pris variabler vil bli skrevet ut.

    $ awk ‘/Skriver/ { navn=$1;splitter=$2;pris=$3;print «element name=» navn;
    print «antall pris=» pris }’ elementer.,txt

    Output:

    Gå til Innhold

    awk matriser

    Både numerisk og tilhørende matriser kan brukes i awk. Utvalg variable erklæring i awk er den samme som til andre programmeringsspråk. Noen bruker av matriser er vist i denne seksjonen.

    Associative Array:

    indeksen av matrisen vil være en hvilken som helst streng for associative array. I dette eksempel en associative array av tre elementer er erklært og skrives ut.,

    Output:

    Numeriske Utvalg:

    En numerisk rekke på tre elementer er erklært og skrives ut ved å skille kategorien.

    Output:

    Gå til Innhold

    awk loop

    Tre typer løkker er støttet av awk. Bruk av disse løkkene er her vist ved hjelp av tre eksempler.

    Mens sløyfe:

    mens sløyfe som er brukt i de følgende kommandoene vil iterere for 5 ganger og avslutt fra loop for break-setningen.,

    $ awk ‘BEGIN { n = 1; while (n <= 10) { if(n > 5) break; print n; n++ } }’

    Output:

    For-løkke:

    For-løkke som er brukt i følgende awk-kommandoen vil beregne summen fra 1 til 10, og ut verdien.,

    $ awk ‘BEGIN { sum=0; for (n = 1; n <= 10; n++) sum=sum+n; skrive ut summen }’

    Output:

    Do-while-løkke:

    en do-while-løkke av de følgende kommandoene vil skrive ut alle partall fra 10 til 5.,

    $ awk ‘BEGIN {counter = 10; do { if (counter%2 ==0) skriv ut counter; teller– }
    while (teller > 5) }’

    Output:

    Gå til Innhold

    awk for å skrive ut den første kolonnen

    Den første kolonnen av enhver fil som kan skrives ut ved å bruke $1 variabel i awk. Men hvis verdien av den første kolonnen som inneholder flere ord, så er det bare det første ordet i den første kolonnen skriver ut. Ved hjelp av en bestemt skilletegn, den første kolonnen kan skrives ut på riktig måte. Opprette en tekst-fil med navnet studenter.,txt med følgende innhold. Her, den første kolonnen inneholder tekst av to ord.

    Studenter.,txt

    Kaniz Fatema 30<sup>th</sup> batch
    Abir Hossain 35<sup>th</sup> batch
    John Abraham 40<sup>th</sup> batch

    Run awk command without any delimiter. The first part of the first column will be printed.,

    $ awk ‘{print $1}’ studenter.txt

    Kjør awk kommandoen med følgende skilletegn. Full del i den første kolonnen vil bli skrevet ut.

    $ awk -F ‘\\ \ s\\s’ ‘{print $1}’ studenter.txt

    Output:

    Gå til Innhold

    awk å skrive ut den siste kolonnen

    $(NF) variabel kan brukes til å skrive ut den siste kolonnen i en hvilken som helst fil. Følgende awk kommandoer vil skrive ut den siste delen og fullt en del av den siste kolonnen av studentene.txt-fil.,

    $ awk ‘{print $(NF)}’ studenter.txt
    $ awk -F ‘\\ \ s\\s’ ‘{print $(NF)}’ studenter.txt

    Output:

    Gå til Innhold

    awk med grep

    grep er en annen nyttig kommando av Linux for å søke i innhold i en fil basert på regulære uttrykk. Hvordan både awk og grep kommandoer kan brukes sammen, er vist i følgende eksempel. grep-kommandoen brukes til å søke informasjon på ansatt-id, ‘1002’ fra den ansatte.txt-fil. Resultatet av grep-kommandoen vil bli sendt til awk som input data., 5% bonus vil bli talt og skrevet ut basert på lønnen til den ansatte id ‘1002’ ved awk-kommandoen.

    $ cat ansatt.txt
    $ grep ‘1002’ medarbeider.txt | awk -F ‘\t’ ‘{ print $2 » vil få $» ($3*5)/100 «bonus»}’

    Output:

    Gå til Innhold

    awk med BASH-fil

    Som andre Linux-kommandoen, awk-kommandoen kan også brukes i et BASH-script. Opprette en tekst-fil med navnet kunder.txt med følgende innhold. Hver linje i denne filen inneholder informasjon om fire felt., Disse er kunde-ID, Navn, adresse og mobilnummer til de er atskilt med ‘/’.

    kunder.txt

    Lag et bash-fil som heter item_search.bash med følgende skript. I henhold til dette skriptet, staten verdi vil bli tatt fra brukeren, og søkte i kundene.txt-fil av grep-kommandoen og gått til awk kommando som input. Awk-kommandoen vil lese 2. og 4. felt på hver linje. Hvis input verdi samsvarer med noen stat verdien av kunder.txt-fil, så vil det skrive ut kundens navn og mobilnummer, ellers vil det skrive ut meldingen «Ingen kunde funnet».,

    item_search.bash

    Kjør følgende kommandoer for å vise utganger.

    $ cat kunder.txt
    $ bash item_search.bash

    Output:

    Gå til Innhold

    awk med sed

    en Annen nyttig søker verktøy for Linux er sed. Denne kommandoen kan brukes til både å søke og erstatte tekst i en fil. Det følgende eksempelet viser bruk av awk kommando med sed-kommandoen. Her, sed-kommandoen vil søke etter alle ansattes navn som starter med ‘J’ og går til awk kommando som input., awk vil skrive ut ansattes navn og ID etter formatering.

    $ cat ansatt.txt
    $ sed -n ‘/J/s » ansatt.txt | awk -F ‘\t’ ‘{ printf «%s(%s)\n», $2, $1 }’

    Output:

    Gå til Innhold

    Konklusjon:

    Du kan bruke awk kommando for å opprette forskjellige typer rapporter basert på en tabell eller avgrenset data etter filtrering av data på riktig måte. Håper du vil være i stand til å lære hvordan awk kommandoen fungerer etter å praktisere de eksempler som er vist i denne opplæringen.

    Articles

    Legg igjen en kommentar

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