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
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 –
– >
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.
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.
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 –
– >
+880:1855:456:907
+9:7777:38644:808
Kjør følgende awk-kommandoen til å endre skilletegnet, ‘:’ av ‘-‘ til innholdet av filen, telefon.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 –
– >
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.,
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 | 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.
$ 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.
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.
BEGIN {FS = «,»} {printf «%5s(%s)\n», $2,$1}
Kjør awkcsv.awk-fil med innholdet av kunden.csv-fil med følgende kommando.
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.
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.
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.,
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.,
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.
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.,
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.
$ 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 «»}
Kjør skriptet ved følgende kommando.
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:
Kjør følgende kommando for å installere gawk-pakke for å bruke getsub () – funksjonen med awk-kommandoen.
Opprette en tekstfil med navnet » salesinfo.,txt » med følgende innhold til å praktisere dette eksemplet. Her feltene er adskilt med en kategori.
salesinfo.txt –
– >
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.,
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.
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.
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 –
– >
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.
Output:
om-annet eksempel:
denne kommandoen skriver ut elementet pris hvis den 3. feltet eksisterer i linjen, ellers vil det skrives ut en feilmelding.
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.,
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.
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.
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.,
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.,
Output:
Do-while-løkke:
en do-while-løkke av de følgende kommandoene vil skrive ut alle partall fra 10 til 5.,
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
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.,
Kjør awk kommandoen med følgende skilletegn. Full del i den første kolonnen vil bli skrevet ut.
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 -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.
$ 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.
$ 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.
$ 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.