Der findes mange hjælpeværktøjer i Linu. – operativsystemet til at søge og generere en rapport fra tekstdata eller fil. Brugeren kan nemt udføre mange typer søgning, udskiftning og rapport generere opgaver ved hjælp af A .k, grep og sed kommandoer. a .k er ikke bare en kommando. Det er et scriptsprog, der kan bruges fra både terminal og A .k-fil. Det understøtter variablen, betinget erklæring, array, sløjfer osv. ligesom andre scriptsprog., Det kan læse ethvert filindhold linje for linje og adskille felterne eller kolonnerne baseret på en bestemt afgrænsning. Det understøtter også regulære udtryk for at søge bestemt streng i teksten indhold eller fil og tager handlinger, hvis nogen match founds. Hvordan du kan bruge A .k kommando og script vises i denne tutorial ved hjælp af 20 nyttige eksempler.,en

  • awk med csv-data
  • awk regex
  • awk mellem store og små bogstaver regex
  • awk med nf (antallet af felter) variabel
  • awk gensub() funktion
  • awk med rand() funktion
  • awk bruger-defineret funktion
  • awk, hvis
  • awk variabler
  • awk arrays
  • awk-løkke
  • awk til at udskrive den første kolonne
  • awk at udskrive den sidste kolonne
  • awk med grep
  • awk med bash script-fil
  • awk med sed
  • Brug awk med printf

    printf() funktionen bruges til at formatere ethvert output i de fleste programmeringssprog., Denne funktion kan bruges med A .k kommando til at generere forskellige typer af formaterede udgange. a .k kommando hovedsagelig anvendes til enhver tekstfil. Opret en tekstfil med navnet medarbejder.t .t med indholdet nedenfor, hvor felter er adskilt af tab (‘\t’).

    medarbejder.txt

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

    følgende awk kommando vil læse data fra medarbejder.t .t-fil linje for linje og udskrive den første arkiveret efter formatering. Her betyder “%10s\n”, at output vil være 10 tegn lang., Hvis værdien af output er mindre end 10 tegn, tilføjes mellemrummene foran på værdien.

    $ awk ‘{ printf “%10s\n”, $1 }’ medarbejder.txt

    Output:

    Gå til Indhold

    awk at opdele på hvid plads

    standard word eller field separator for at opdele en tekst er hvide rum. a .k kommando kan tage tekst værdi som input på forskellige måder. Indtastningsteksten sendes fra echo-kommandoen i det følgende eksempel., Teksten, ‘Jeg kan lide programmering’ vil blive delt som standard separator, mellemrum, og det tredje ord udskrives som output.

    $ echo “jeg kan godt lide programmering” | awk ‘{ print $3 }’

    Output:

    Gå til Indhold

    awk at ændre den afgrænser

    awk-kommandoen kan bruges til at ændre den afgrænser til en fil indhold. Antag, at du har en tekstfil med navnet telefon.t .t med følgende indhold, hvor ‘:’ bruges som feltseparator for filindholdet.

    telefon.,txt

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

    Kør følgende awk kommando til at ændre den afgrænser, ‘:’ af ‘-‘ for at indholdet af den fil, telefon.t .t.

    $ cat phone.t .t
    $ a .k ‘$1=$1’ FS=”:” OFS=”-” telefon.txt

    Output:

    Gå til Indhold

    awk med tab-afgrænset data

    awk kommando har mange indbyggede variable, som anvendes til at læse tekst på forskellige måder. To af dem er FS og OFS., FS er input felt separator og OFS er output felt separator variabler. Anvendelserne af disse variabler er vist i dette afsnit. Opret en fane adskilt fil med navnet input.t .t med følgende indhold for at teste brugen af FS og OFS variabler.

    Input.txt

    Client-side scripting sprog,
    Server-side scripting sprog,
    Database-Server
    Web-Server

    Bruger FS variabel med fane

    Den følgende kommando vil opdele hver linje af inddata.t .t-fil baseret på fanen (‘\t’) og udskrive det første felt på hver linje.,

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

    Output:

    Bruger OFS variabel med fane

    følgende awk kommando udskrives den 9. og 5. områderne ‘ls -l’ kommando udgang med fanen separator efter udskrivning kolonnen titel “Navn” og “Størrelse”. Her bruges OFS-variabel til at formatere output ved hjælp af en fane.,

    $ ls -l
    $ ls -l | awk -v OFS=’\t’ ‘BEGIN { printf “%s\t%s\n”, “Navn”, “Size”} {print $9,$5}’

    Output:

    Gå til Indhold

    awk med CSV-data

    indholdet af en CSV-fil kan blive fortolket på flere forskellige måder ved hjælp af awk-kommando. Opret en CSV-fil med navnet ‘ kunde.csv ‘ med følgende indhold til at anvende a .k kommando.

    kunde.t .t

    læsning enkelt felt af CSV-fil

    ‘- f’ valgmulighed bruges med A .k kommando til at indstille skilletegn til opdeling hver linje i filen., Følgende a .k-kommando udskriver kundens navnefelt.csv-fil.

    $ cat kunde.csv
    $ a customerk-f “,” ‘{print $2}’ kunde.csv

    Output:

    læsning af flere felter ved at kombinere med anden tekst

    følgende kommando udskriver tre kundefelter.csv ved at kombinere Titel Tekst, Navn, e-mail og telefon. Den første linje af kunden.csv-fil indeholder titlen på hvert felt. NR variabel indeholder linjenummeret på filen, når A .k kommando analyserer filen., I dette eksempel bruges NR-variablen til at udelade den første linje i filen. Udgangen vil vise 2., 3. og 4. felter af alle linjer undtagen den første linje.

    $ awk -F “,” ‘NR>1 {print “Navn:” $2 “, e-Mail:” $3 “, Phone:” $4}’ kunde.csv

    Output:

    Læsning CSV-fil ved hjælp af en awk-scriptet

    awk-scriptet kan udføres ved at køre awk fil. Hvordan du kan oprette A .k-fil og køre filen vises i dette eksempel. Opret en fil med navnet a .kcsv.akk med følgende kode., Begynd søgeord bruges i scriptet til at informere a .k kommando til at udføre scriptet af begynd del først, før du udfører andre opgaver. Her bruges field separator (FS) til at definere splitting delimiter, og 2.og 1. felter udskrives i henhold til det format, der bruges i printf () – funktionen.

    a .kcsv.awk
    BEGIN {FS = “,”} {printf “%5s(%s)\n”, $2,$1}

    Kør awkcsv.a .k fil med indholdet af kunden.csv-fil ved følgende kommando.

    $ a .k-f a .kcsv.a customerk kunde.,csv

    Output:

    Gå til Indhold

    awk regex

    Det regulære udtryk er et mønster, der bruges til at søge enhver streng i en tekst. Forskellige typer af komplicerede søgning og erstatte opgaver kan gøres meget nemt ved hjælp af det regulære udtryk. Nogle enkle anvendelser af det regulære udtryk med A .k-kommandoen vises i dette afsnit.

    matchende tegnsæt

    følgende kommando matcher ordet Fool eller bool eller Cool med inputstrengen og udskriver, hvis ordet grundlægger., Her vil dukke ikke matche og ikke udskrive.

    $ printf “Narre\nCool\nDoll\nbool” | awk ‘/ool/’

    Output:

    Søge streng i starten af den linje,

    ‘^’ symbol bruges i den regulære udtryk til at søge et mønster i starten af linjen. ‘Linu.’ ord vil blive søgt ved starten af hver linje i teksten i det følgende eksempel. Her starter to linjer med teksten ‘ Linu.’, og disse to linjer vises i output.,

    $ echo -e “Linux er gratis at bruge\n Det er en open-source software\nLinuxHint er
    en populær blog site” | awk ‘/^Linux/’

    Output:

    Søge streng i slutningen af den linje

    ‘$’ symbol bruges i den regulære udtryk til at søge et mønster i slutningen af hver linje af teksten. ‘Script’ ord søges i følgende eksempel. Her indeholder to linjer ordet, Script i slutningen af linjen.,

    $ echo -e “PHP Script\nJavaScript\nVisual Programmering” | awk ‘/Script$/’

    Output:

    Søgning ved at udelade bestemt tegnsæt

    ‘^’ symbol angiver starten af teksten, når den er brugt i foran af enhver streng mønster (‘/^…/’) eller før nogen tegnsæt anmeldt af ^. Hvis symbolet ‘ ^ ‘ bruges inden i det tredje beslag, udelades det definerede tegnsæt inde i beslaget på søgetidspunktet., Følgende kommando vil søge ethvert ord, der ikke starter med ‘F’, men slutter med ‘ool’. Cool og bool udskrives efter mønster-og tekstdata.

    $ printf “Narre\nCool\nDoll\nbool” | awk ‘/ool/’

    Output:

    Gå til Indhold

    awk mellem store og små bogstaver regex

    Som standard, regulære udtryk er versalfølsom søgning, når du søger et mønster i strengen. Case ufølsom søgning kan gøres ved a .k kommando med det regulære udtryk., I det følgende eksempel, Tolo .er () funktion bruges til at gøre case ufølsom søgning. Her konverteres det første ord i hver linje i inputteksten til små bogstaver ved at bruge Tolo .er () – funktionen og matche med det regulære udtryksmønster. toupper () – funktionen kan også bruges til dette formål, i dette tilfælde skal mønsteret defineres af alle store bogstaver. Teksten defineret i det følgende eksempel indeholder søgeordet ‘webeb’ i to linjer, der udskrives som output.,

    $ echo -e “Web Design\nweb udvikling\nFramework” | awk ‘tolower($0) ~ /^web/;’

    Output:

    Gå til Indhold

    awk med NF (antallet af felter) variabel

    NF er en indbygget variabel af awk-kommandoen, som bruges til at tælle det samlede antal felter i hver linje i den indtastede tekst. Opret en tekstfil med flere linjer og flere ord. input.t .t-fil bruges her, som er oprettet i det foregående eksempel.,

    brug af NF fra kommandolinjen

    Her bruges den første kommando til at vise indholdet af input.t .t-fil og anden kommando bruges til at vise det samlede antal felter i hver linje i filen ved hjælp af NF-variabel.

    $ cat input.t .t
    $ a .k ‘{print NF}’ input.txt

    Output:

    Bruger NF i awk fil

    Opret en awk fil med navnet tæller.akk med scriptet nedenfor. Når dette script vil udføre med nogen tekstdata derefter hver linje indhold med samlede felter vil blive udskrevet som output.

    tæller.,awk

    {print $0}
    {print “”}

    Kør script med følgende kommando.

    $ a .k-f tæller.akk input.txt

    Output:

    Gå til Indhold

    awk gensub() funktion

    getsub() er en substitution funktion, der bruges til at søge streng er baseret på særlige skilletegn eller regulært udtryk. Denne funktion er defineret i’ Ga .k ‘ pakke, som ikke er installeret som standard. Syntaksen for denne funktion er angivet nedenfor., Den første parameter indeholder det regulære udtryksmønster eller søgefelter, den anden parameter indeholder erstatningsteksten, den tredje parameter angiver, hvordan søgningen skal udføres, og den sidste parameter indeholder teksten, hvor denne funktion vil blive anvendt.

    Syntax:

    gensub(regexp, udskiftning, hvordan )

    Kør følgende kommando for at installere gawk-pakke til brug af getsub() funktion med awk kommando.

    $ sudo apt-get install gawk

    Opret en tekstfil med navnet ‘salesinfo.,t .t ‘ med følgende indhold for at øve dette eksempel. Her adskilles felterne med en fane.

    salesinfo.txt

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

    Kør følgende kommando for at læse den numeriske felter af salesinfo.t .t-fil og udskrive det samlede salg beløb. Her angiver den tredje parameter, ‘G’ den globale søgning. Det betyder, at mønsteret vil blive søgt i det fulde indhold af filen.,

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

    Output:

    Gå til Indhold

    awk med slump () – funktionen

    rand() funktionen bruges til at generere tilfældige tal, der er større end 0 og mindre end 1. Så det vil altid generere et brøktal mindre end 1. Den følgende kommando vil generere et fraktioneret tilfældigt tal og multiplicere værdien med 10 for at få et tal mere end 1., Et brøktal med to cifre efter decimaltegnet udskrives til anvendelse af printf () – funktionen. Hvis du kører følgende kommando flere gange, får du forskellige output hver gang.

    $ a .k ‘BEGIN {printf “Number is =%.2f\n” , rand()*10}’

    Output:

    Gå til Indhold

    awk bruger-defineret funktion

    Alle funktioner, som er anvendt i det foregående eksempler er indbygget funktioner. Men du kan erklære en brugerdefineret funktion i dit a .k-script til at udføre en bestemt opgave., Antag, at du vil oprette en brugerdefineret funktion til at beregne arealet af et rektangel. For at udføre denne opgave skal du oprette en fil med navnet ‘område.akk ‘ med følgende script. I dette eksempel erklæres et brugerdefineret funktion navngivet område() i scriptet, der beregner området baseret på inputparametrene og returnerer områdeværdien. getline kommando bruges her til at tage input fra brugeren.

    område.a .k

    Kør scriptet.

    $ a .k-f område.,awk

    Output:

    Gå til Indhold

    awk, hvis eksempel

    awk understøtter betingede udsagn som andre standard programmeringssprog. Tre typer if-udsagn vises i dette afsnit ved hjælp af tre eksempler. Opret en tekstfil navngivne elementer.t witht med følgende indhold.

    elementer.txt

    HDD Samsung $100
    Mus A4Tech
    HP Printer $200

    den Enkle, hvis eksempel:

    han følgende kommando vil læse indholdet af de forskellige elementer.t .t-fil og kontrollere det 3.felt værdi i hver linje., Hvis værdien er tom, udskriver den en fejlmeddelelse med linjenummeret.

    $ a .k ‘{ if ($3 == “”) print “Prisfelt mangler i linje” NR }’ poster.t .t

    Output:

    if-else eksempel:

    følgende kommando udskriver elementprisen, hvis det 3.felt findes i linjen, ellers udskriver det en fejlmeddelelse.

    $ a .k ‘{ if ($3 == “”) print “Price field is missing”
    else print “item price is” $3 }’ items.,t .t

    Output:

    if-else-if eksempel:

    Når følgende kommando udføres fra terminalen, tager den input fra brugeren. Inputværdien vil blive sammenlignet med hver betingelse, indtil betingelsen er sand. Hvis en tilstand bliver sand, vil den udskrive den tilsvarende karakter. Hvis inputværdien ikke stemmer overens med nogen betingelse, vil den udskrive mislykkes.,

    $ awk ‘BEGIN { print “Enter mærket:”
    getline mark < “-“
    if (mark >= 90) print “A+”
    else if( mark >= 80) print “A”
    else if( mark >= 70) print “B+”
    else print “Fejl” }’

    Output:

    Gå til Indhold

    awk variabler

    erklæringen af awk-variabel, der svarer til den erklæring, som shell-variabel. Der er en forskel i at læse værdien af variablen., ‘$’symbol bruges med variabelnavnet for shell-variablen til at læse værdien. Men der er ingen grund til at bruge ‘$’ med A .k variabel til at læse værdien.

    brug af simpel variabel:

    følgende kommando erklærer en variabel ved navn ‘site’, og en strengværdi tildeles den variabel. Værdien af variablen udskrives i den næste sætning.

    $ a .k ‘begynd{ site=”Linu .hint.,kom”; print site}’

    Output:

    ved Hjælp af en variabel til at hente data fra en fil

    Den følgende kommando vil søge ordet “Printer” i fil-elementer.t .t. Hvis en linje i filen starter med’ Printer’, gemmer den værdien af 1., 2. og 3. felter i tre variabler. navn og prisvariabler udskrives.

    $ awk ‘/Printer/ { navn=$1;brand=$2;pris=$3;print “element name=” navn;
    print “element pris=” prisen }’ elementer.,txt

    Output:

    Gå til Indhold

    awk arrays

    Både numerisk og associerede arrays kan bruges i awk. Array variabel erklæring i A .k er samme til andre programmeringssprog. Nogle anvendelser af arrays er vist i dette afsnit.

    associativ Array:

    indekset for arrayet vil være en hvilken som helst streng for det associative array. I dette eksempel erklæres og udskrives et associativt array på tre elementer.,

    Output:

    numerisk Array:

    et numerisk array på tre elementer erklæres og udskrives ved at adskille fanen.

    Output:

    gå til indhold

    A .k loop

    tre typer sløjfer understøttes af a .k. Anvendelserne af disse sløjfer vises her ved hjælp af tre eksempler.

    Mens loop:

    Mens loop, der bruges i følgende kommando, vil gentage sig i 5 gange og afslutte fra loop for break-sætningen.,

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

    Output:

    For-løkke:

    For-løkke, der anvendes i det følgende awk kommando vil beregne summen fra 1 til 10 og udskrive værdi.,

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

    Output:

    Do-while-løkken:

    en do-while-løkke af den følgende kommando vil udskrive alle lige numre fra 10 til 5.,

    $ awk ‘BEGIN {counter = 10; do { if (counter%2 ==0) print tæller; counter– }
    while (counter > 5) }’

    Output:

    Gå til Indhold

    awk til at udskrive den første kolonne

    Den første kolonne af enhver fil, der kan udskrives ved hjælp af $1 variabel i awk. Men hvis værdien af den første kolonne indeholder flere ord, udskrives kun det første ord i den første kolonne. Ved at bruge en bestemt afgrænsning kan den første kolonne udskrives korrekt. Opret en tekstfil med navnet studerende.,t witht med følgende indhold. Her indeholder den første kolonne teksten til to ord.

    studerende.,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.,

    $ a .k ‘{print $1}’ studerende.t .t

    Kør a .k-kommando med følgende afgrænsning. Den fulde del af den første kolonne udskrives.

    $ a .k-F ‘\\S\\S’ ‘{print $1}’ studerende.txt

    Output:

    Gå til Indhold

    awk at udskrive den sidste kolonne

    $(NF) variable kan bruges til at udskrive den sidste kolonne i en fil. Følgende a .k-kommandoer udskriver den sidste del og den fulde del af den sidste kolonne af eleverne.t filet-fil.,

    $ a .k ‘{print $(NF)}’ studerende.t {t
    $ a .k-F ‘\\S\\S’ ‘{print $(NF)}’ studerende.txt

    Output:

    Gå til Indhold

    awk med grep

    grep er en anden nyttig kommando af Linux for at søge efter indhold i en fil, der er baseret på regulære udtryk. Hvordan både A .k-og grep-kommandoer kan bruges sammen, vises i følgende eksempel. grep kommando bruges til at søge oplysninger om Medarbejder-id, ‘1002’ fra medarbejderen.t filet-fil. Udgangen af grep-kommandoen sendes til a .k som inputdata., 5% bonus tælles og udskrives baseret på lønnen til medarbejderens id, ‘1002’ af A .k-kommandoen.

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

    Output:

    Gå til Indhold

    awk med BASH-fil

    Som andre Linux kommando, awk-kommandoen kan også bruges i et BASH-script. Opret en tekstfil navngivne kunder.t witht med følgende indhold. Hver linje i denne fil indeholder oplysninger om fire felter., Disse er kundens ID, navn, adresse og mobilnummer dem er adskilt af ‘/’.

    kunder.t Createt

    Opret en bash-fil med navnet item_search.bash med følgende script. Ifølge dette script vil statsværdien blive taget fra brugeren og søgt i kunderne.t .t-fil ved grep kommando og videre til a .k kommando som input. A .k kommando vil læse 2.og 4. felter i hver linje. Hvis inputværdien stemmer overens med en hvilken som helst statsværdi af kunder.t .t-fil så vil det udskrive kundens navn og mobilnummer, ellers vil det udskrive meddelelsen “Ingen kunde fundet”.,

    item_search.bash

    Kør følgende kommandoer for at vise udgangene.

    $ cat kunder.t .t
    $ bash item_search.bash

    Output:

    Gå til Indhold

    awk med sed

    en Anden nyttig søger redskab til Linux er sed. Denne kommando kan bruges til både at søge og erstatte tekst af enhver fil. Følgende eksempel viser brugen af A .k kommando med sed kommando. Her sed kommando vil søge alle medarbejder navne starter med’ J ‘ og passerer til a .k kommando som input., a .k vil udskrive medarbejder navn og ID efter formatering.

    $ cat medarbejder.t employeet
    $ sed-n ‘/J/p’ medarbejder.txt | awk -F ‘\t’ ‘{ printf “%s(%s)\n”, $2, $1 }’

    Output:

    Gå til Indhold

    Konklusion:

    Du kan bruge awk-kommandoen til at oprette forskellige typer af rapporter er baseret på en tabel eller afgrænset data efter filtrering af data korrekt. Håber, du vil være i stand til at lære, hvordan a .k command fungerer efter at have praktiseret eksemplerne vist i denne tutorial.

    Articles

    Skriv et svar

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