Awk

20 awk pavyzdžių

20 awk pavyzdžių

20 awk pavyzdžių

„Linux“ operacinėje sistemoje yra daugybė įrankių, skirtų ieškoti ir sugeneruoti ataskaitą iš teksto duomenų ar failo. Naudodamas komandas „awk“, „grep“ ir „sed“, vartotojas gali lengvai atlikti daugybę tipų paiešką, pakeisti ir pranešti apie generuojančias užduotis. awk nėra tik komanda. Tai scenarijų kalba, kurią galima naudoti tiek iš terminalo, tiek iš awk failo. Jis palaiko kintamąjį, sąlyginį sakinį, masyvą, kilpas ir kt. kaip ir kitos scenarijų kalbos. Jis gali nuskaityti bet kokio failo turinį eilutėmis ir atskirti laukus ar stulpelius pagal konkretų ribotuvą. Jis taip pat palaiko reguliarųjį reiškinį ieškant tam tikros eilutės teksto turinyje ar faile ir imasi veiksmų, jei randama atitiktis. Kaip naudotis awk komanda ir scenarijumi, parodyta šioje pamokoje naudojant 20 naudingų pavyzdžių.

Turinys:

  1. awk su printf
  2. awk suskaidyti ant balto ploto
  3. awk pakeisti ribotuvą
  4. awk su skirtukais atskirtais duomenimis
  5. awk su csv duomenimis
  6. awk regex
  7. awk case nejautrus regex
  8. awk su nf (laukų skaičius) kintamuoju
  9. awk gensub () funkcija
  10. awk su rand () funkcija
  11. AWK vartotojo apibrėžta funkcija
  12. awk jei
  13. awk kintamieji
  14. awk masyvai
  15. awk kilpa
  16. awk atspausdinti pirmąjį stulpelį
  17. awk atspausdinti paskutinį stulpelį
  18. awk su grep
  19. awk su bash scenarijaus byla
  20. awk su sed

Awk naudojimas su printf

printf () funkcija naudojama bet kokio išvesties formatavimui daugeliu programavimo kalbų. Šią funkciją galima naudoti su awk komandą sugeneruoti įvairių tipų suformatuotus išvestis. awk komanda daugiausia naudojama bet kokiam tekstiniam failui. Sukurkite tekstinį failą pavadinimu darbuotojas.txt su toliau pateiktu turiniu, kur laukai atskirti skirtuku ('\ t').

darbuotojas.txt

1001 Jonas sena 40000
1002 „Jafar Iqbal 60000“
1003 Meheris Nigaras 30000
1004 Jonny Liver 70000

Ši komanda awk nuskaitys duomenis iš darbuotojas.txt failą eilutėje po eilutės ir atsispausdinkite pirmą paduotą po formatavimo. Čia „% 10s \ n“Reiškia, kad išvestis bus 10 simbolių. Jei išvesties vertė yra mažesnė nei 10 simbolių, vertės priekyje bus pridėti tarpai.

$ awk 'printf "% 10s \ n", $ 1' darbuotojas.txt

Išvestis:

Eikite į turinį

awk suskaidyti ant balto ploto

Numatytasis žodžio ar lauko skyriklis, skirtas bet kokiam tekstui padalyti, yra tarpas. komanda awk gali įvairiais būdais įvesti teksto vertę. Įvesties tekstas perduodamas iš aidas komanda šiame pavyzdyje. Tekstas, 'Man patinka programuoti'bus padalytas pagal numatytąjį skyriklį, vietos, o trečiasis žodis bus išspausdintas kaip išvestis.

$ echo 'man patinka programuoti' | awk 'print $ 3'

Išvestis:

Eikite į turinį

awk pakeisti ribotuvą

Komanda awk gali būti naudojama norint pakeisti bet kurio failo turinio skiriklį. Tarkime, kad turite tekstinį failą, pavadintą telefono.txt su tokiu turiniu, kur „:“ naudojamas kaip failo turinio lauko atskyrėjas.

telefono.txt

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

Norėdami pakeisti skyriklį, vykdykite šią komandą awk, ":" pateikė „-“ prie bylos turinio, telefono.txt.

$ kačių telefonas.txt
$ awk '$ 1 = $ 1' FS = ":" OFS = "-" telefonas.txt

Išvestis:

Eikite į turinį

awk su skirtukais atskirtais duomenimis

komandoje awk yra daug integruotų kintamųjų, kurie naudojami tekstui skaityti įvairiais būdais. Du iš jų yra FS ir OFS. FS yra įvesties lauko skyriklis ir OFS yra išvesties lauko separatoriaus kintamieji. Šių kintamųjų naudojimas parodytas šiame skyriuje. Sukurti skirtuką atskirtas failas pavadintas įvestis.txt turinį, kad išbandytumėte FS ir OFS kintamieji.

Įvestis.txt

Kliento pusės scenarijų kalba
Serverio pusės scenarijų kalba
Duomenų bazių serveris
Tinklapio serveris

Naudojant FS kintamąjį su skirtuku

Ši komanda padalins kiekvieną eilutę įvestis.txt failą pagal skirtuką ('\ t') ir atspausdinkite pirmąjį kiekvienos eilutės lauką.

$ awk 'print $ 1' FS = '\ t' įvestis.txt

Išvestis:

Naudojant OFS kintamąjį su skirtuku

Ši komanda awk išspausdins 9tūkst ir 5tūkst laukai „ls -l“ komandos išvestis su skirtukų skirikliu, išspausdinus stulpelio pavadinimą „vardas“Ir„Dydis“. Čia, OFS kintamasis naudojamas formatuoti išvestį skirtuku.

$ ls -l
$ ls -l | awk -v OFS = '\ t' 'PRADŽIA printf "% s \ t% s \ n", "Pavadinimas", "Dydis" spausdinti 9 USD, 5 USD'

Išvestis:

Eikite į turinį

awk su CSV duomenimis

Bet kurio CSV failo turinį galima analizuoti keliais būdais, naudojant komandą awk. Sukurkite CSV failą pavadinimu „klientas.csv'Su tokiu turiniu, kad pritaikytumėte komandą awk.

klientas.txt

ID, vardas, el. Paštas, telefonas
1, Sofija, [saugoma el. Paštu], (862) 478-7263
2, Amelija, [saugoma el. Paštu], (530) 764-8000
3, Emma, ​​[saugoma el. Paštu], (542) 986-2390

Vieno CSV failo lauko skaitymas

„-F“ Parinktis naudojama su komanda awk, kad būtų galima nustatyti kiekvieno failo eilutės atskyrimo ribotuvą. Ši komanda awk išspausdins vardas sritis klientas.csv failą.

$ katės klientas.csv
$ awk -F "," 'print $ 2' klientas.csv

Išvestis:

Kelių laukų skaitymas derinant su kitu tekstu

Ši komanda atspausdins tris laukus klientas.csv derinant pavadinimo tekstą, Vardas, el. Paštas ir telefonas. Pirmoji eilutė klientas.csv faile yra kiekvieno lauko pavadinimas. NR kintamajame yra failo eilutės numeris, kai komanda awk analizuoja failą. Šiame pavyzdyje, NR kintamasis naudojamas praleisti pirmąją failo eilutę. Išvestyje bus rodomi 2nd, 3rd ir 4tūkst visų eilučių laukai, išskyrus pirmąją.

$ awk -F "," 'NR> 1 print "Pavadinimas:" $ 2 ", El. paštas:" $ 3 ", Telefonas:" $ 4 "klientas.csv

Išvestis:

CSV failo skaitymas naudojant „awk“ scenarijų

awk scenarijų galima vykdyti paleidus awk failą. Kaip galite sukurti awk failą ir paleisti failą, parodyta šiame pavyzdyje. Sukurkite failą pavadinimu awkcsv.awk su tokiu kodu. PRADŽIA raktinis žodis naudojamas scenarijuje informuojant komandą awk, kad būtų įvykdytas PRADŽIA dalis prieš atliekant kitas užduotis. Čia lauko skyriklis (FS) naudojamas apibrėžti dalijamąjį atskyriklį ir 2nd ir 1šv laukai bus spausdinami pagal formatą, naudojamą funkcijoje printf ().

awkcsv.awk
PRADŽIA FS = "," printf "% 5s (% s) \ n", 2 USD, 1 USD

Bėk awkcsv.awk failas su. turiniu klientas.csv failą atlikdami šią komandą.

$ awk -f awkcsv.awk klientas.csv

Išvestis:

Eikite į turinį

awk regex

Reguliarioji išraiška yra šablonas, naudojamas ieškant bet kurios teksto eilutės. Įvairių tipų sudėtingas paieškos ir pakeitimo užduotis galima atlikti labai paprastai naudojant įprastą išraišką. Šiame skyriuje parodyta keletas paprastų reguliaraus reiškinio su awk komandomis naudojimo būdų.

Atitinkamas simbolių rinkinys

Ši komanda atitiks žodį Kvailys arba beprotiškumas arba Saunus su įvesties eilute ir atspausdinkite, jei žodis rastas. Čia, Lėlė neatitiks ir nespausdins.

$ printf "Fool \ nCool \ nDoll \ nbool" | awk '/ [FbC] ool /'

Išvestis:

Ieškoma eilutės eilutės pradžioje

'^' simbolis naudojamas įprastoje išraiškoje, norint ieškoti bet kurio modelio eilutės pradžioje. "„Linux“ žodis bus ieškomas kiekvieno teksto eilutės pradžioje šiame pavyzdyje. Čia dvi eilutės prasideda tekstu, „Linux“"ir šios dvi eilutės bus rodomos išvestyje.

$ echo -e "„ Linux “galima laisvai naudoti \ n Tai yra atviro kodo programinė įranga \ n„ LinuxHint “yra
populiari tinklaraščio svetainė "| awk '/ ^ Linux /'

Išvestis:

Ieškoma eilutės eilutės pabaigoje

„$“ simbolis naudojamas įprastoje išraiškoje, norint ieškoti bet kurio modelio kiekvienos teksto eilutės pabaigoje. "Scenarijusžodis ieškomas šiame pavyzdyje. Čia dviejose eilutėse yra žodis, Scenarijus eilutės pabaigoje.

$ echo -e "PHP scenarijus \ nJavaScript \ nVizualinis programavimas" | awk '/ scenarijus $ /'

Išvestis:

Ieškoma praleidžiant tam tikrą simbolių rinkinį

'^' simbolis nurodo teksto pradžią, kai jis naudojamas prieš bet kurį eilutės modelį („/ ^… /“) arba prieš bet kurį simbolių rinkinį, deklaruotą ^ […]. Jei '^' simbolis naudojamas trečiajame skliauste, [^…], tada apibrėžtas simbolių rinkinys, esantis skliaustelyje, bus praleistas atliekant paiešką. Ši komanda ieškos bet kurio žodžio, kuris neprasideda „F“ bet baigiant „ool". Saunus ir bool bus atspausdinti pagal modelio ir teksto duomenis.

$ printf "Fool \ nCool \ nDoll \ nbool" | awk '/ [^ F] ool /'

Išvestis:

Eikite į turinį

awk case nejautrus regex

Pagal numatytuosius nustatymus reguliarioji išraiška ieško didžiųjų ir mažųjų raidžių, ieškodama bet kurio eilutės modelio. Didžiųjų ir mažųjų raidžių paiešką galima atlikti naudojant komandą awk su taisyklingąja išraiška. Šiame pavyzdyje, nuleisti() funkcija naudojama atliekant nejautrą didžiųjų ir mažųjų raidžių paiešką. Čia pirmasis kiekvienos įvesties teksto eilutės žodis bus konvertuotas į mažąsias raides nuleisti() funkciją ir atitikti reguliaraus reiškinio modelį. viršutinis () funkcija taip pat gali būti naudojama šiam tikslui, šiuo atveju raštas turi būti apibrėžtas didele raide. Šiame pavyzdyje apibrėžtame tekste yra ieškomas žodis, internetas'dviem eilutėmis, kurios bus atspausdintos kaip išvestis.

$ echo -e "Interneto dizainas \ n žiniatinklio kūrimas \ nKarkasas" | awk 'tolower ($ 0) ~ / ^ web /;'

Išvestis:

Eikite į turinį

awk su NF (laukų skaičius) kintamuoju

NF yra įmontuotas awk kintamasis, naudojamas skaičiuoti bendrą laukų skaičių kiekvienoje įvesties teksto eilutėje. Sukurkite bet kokį teksto failą su keliomis eilutėmis ir keliais žodžiais. įvestis.txt čia naudojamas failas, kuris sukurtas ankstesniame pavyzdyje.

Naudojant NF iš komandinės eilutės

Čia pirmoji komanda naudojama rodyti įvestis.txt failas ir antroji komanda naudojami rodyti bendrą laukų skaičių kiekvienoje failo eilutėje naudojant NF kintamasis.

$ katės įvestis.txt
$ awk 'print NF' įvestis.txt

Išvestis:

NF naudojimas awk faile

Sukurkite awk failą pavadinimu suskaičiuoti.awk su žemiau pateiktu scenarijumi. Kai šis scenarijus bus vykdomas su bet kokiais teksto duomenimis, kiekvienas eilutės turinys su visais laukais bus atspausdintas kaip išvestis.

suskaičiuoti.awk

spausdinti $ 0
print "[Iš viso laukų:" NF "]"

Paleiskite scenarijų naudodami šią komandą.

$ awk -f skaičius.awk įvestis.txt

Išvestis:

Eikite į turinį

awk gensub () funkcija

getsub () yra pakaitalo funkcija, naudojama ieškant eilutės pagal tam tikrą skiriklį arba taisyklingos išraiškos modelį. Ši funkcija apibrėžta  „gawk“ paketas, kuris nėra įdiegtas pagal numatytuosius nustatymus. Šios funkcijos sintaksė pateikta žemiau. Pirmajame parametre yra taisyklingos išraiškos šablonas arba ieškos skyriklis, antrame parametre yra pakaitinis tekstas, trečiame parametre nurodoma, kaip bus atliekama paieška, o paskutiniame parametre yra tekstas, kuriame bus naudojama ši funkcija.

Sintaksė:

gensub (regexp, pakeitimas, kaip [, target])

Norėdami įdiegti, vykdykite šią komandą gawk naudojimo paketas getsub () funkcija su komanda awk.

$ sudo apt-get install gawk

Sukurkite tekstinį failą pavadinimu „pardavimo informacija.txt„su tokiu turiniu, kad galėtumėte praktikuoti šį pavyzdį. Čia laukai yra atskirti skirtuku.

pardavimo informacija.txt

Pirmadienis 700000
800000 antradienis
Trečiadienis 750000
20000 tūkst
Penktadienis 430000
Šeštadienis 820000

Vykdykite šią komandą, kad perskaitytumėte skaitinius pardavimo informacija.txt failą ir atspausdinkite visą pardavimo sumą. Čia trečiasis parametras „G“ nurodo visuotinę paiešką. Tai reiškia, kad modelis bus ieškomas visame failo turinyje.

$ awk 'x = gensub ("\ t", "", "G", 2 USD); printf x "+" END print 0 'pardavimų informacija.txt | bc -l

Išvestis:

Eikite į turinį

awk su rand () funkcija

randas () funkcija naudojama generuoti bet kokį atsitiktinį skaičių, didesnį nei 0 ir mažesnį nei 1. Taigi, jis visada generuos trupmeninį skaičių, mažesnį nei 1. Ši komanda sugeneruos trupmeninį atsitiktinį skaičių ir padaugins vertę iš 10, kad gautų skaičių daugiau nei 1. Dalies skaičius su dviem skaitmenimis po kablelio bus atspausdintas norint pritaikyti funkciją printf (). Jei vykdysite šią komandą kelis kartus, kiekvieną kartą gausite skirtingą išvestį.

$ awk 'BEGIN printf "Skaičius =%.2f \ n ", randas () * 10 '

Išvestis:

Eikite į turinį

AWK vartotojo apibrėžta funkcija

Visos ankstesniuose pavyzdžiuose naudojamos funkcijos yra integruotos funkcijos. Bet jūs galite paskelbti vartotojo apibrėžtą funkciją savo „awk“ scenarijuje atlikti bet kurią konkrečią užduotį.  Tarkime, norite sukurti pasirinktinę funkciją stačiakampio plotui apskaičiuoti. Norėdami atlikti šią užduotį, sukurkite failą pavadinimu „srityje.awk'su tokiu scenarijumi. Šiame pavyzdyje vartotojo apibrėžta funkcija pavadinta plotas () yra deklaruojamas scenarijuje, kuris apskaičiuoja plotą pagal įvesties parametrus ir grąžina srities vertę. getline komanda naudojama čia norint paimti iš vartotojo įvestį.

srityje.awk

# Apskaičiuokite plotą
funkcijos sritis (aukštis, plotis)
grąžinimo aukštis * plotis

# Pradeda vykdyti
PRADĖTI
print "Įveskite aukščio vertę:"
getline h < "-"
print "Įveskite pločio vertę:"
getline w < "-"
spausdinti "plotas =" plotas (h, w)

Paleiskite scenarijų.

$ awk -f plotas.awk

Išvestis:

Eikite į turinį

awk jei pavyzdys

„awk“ palaiko sąlyginius teiginius, kaip ir kitas standartines programavimo kalbas. Naudojant tris pavyzdžius, šiame skyriuje pateikiami trijų tipų „if“ teiginiai. Sukurkite tekstinį failą pavadinimu daiktų.txt turinį.

daiktų.txt

HDD „Samsung“ 100 USD
Pelė A4Tech
Spausdintuvas 200 USD

Paprasta, jei pavyzdys:

vykdydamas komandą, jis perskaitys daiktų.txt failą ir patikrinkite 3rd lauko vertė kiekvienoje eilutėje. Jei reikšmė tuščia, ji atspausdins klaidos pranešimą su eilutės numeriu.

$ awk 'if ($ 3 == "") print "Eilutėje" NR "trūksta kainos lauko.txt

Išvestis:

jei dar pavyzdys:

Ši komanda išspausdins prekės kainą, jei 3rd laukas yra eilutėje, priešingu atveju jis atspausdins klaidos pranešimą.

$ awk 'if ($ 3 == "") print "Trūksta kainos lauko"
kitaip spausdinti „prekės kaina yra„ 3 USD “prekės.txt

Išvestis:

jei-dar-jei pavyzdys:

Kai ši komanda bus vykdoma iš terminalo, ji imsis vartotojo įvesties. Įvesties vertė bus lyginama su kiekviena sąlyga, jei sąlyga bus teisinga. Jei kuri nors sąlyga išsipildys, ji atspausdins atitinkamą pažymį. Jei įvesties reikšmė nesutampa su jokia sąlyga, spausdinti nepavyks.

$ awk 'BEGIN print "Įveskite ženklą:"
getline ženklas <  "-"
jei (pažymėti> = 90) spausdinti „A +“
kitaip, jei (pažymėti> = 80) atspausdinti „A“
kitaip, jei (pažymėti> = 70) atspausdinti „B +“
kitaip spausdinti „Nepavyko“ '

Išvestis:

Eikite į turinį

awk kintamieji

Awk kintamojo deklaracija yra panaši į shell kintamojo deklaraciją. Kintamojo reikšmę galima nuskaityti skirtingai. Simbolis „$“ naudojamas su kintamojo kintamojo pavadinimu vertei nuskaityti. Tačiau norint nuskaityti vertę nereikia naudoti „$“ su awk kintamuoju.

Naudojant paprastą kintamąjį:

Ši komanda deklaruos kintamąjį, pavadintą „svetainė“ ir tam kintamajam priskiriama eilutės reikšmė. Kintamojo vertė spausdinama kitame sakinyje.

$ awk 'BEGIN site = "LinuxHint.com "; spausdinti svetainę '

Išvestis:

Kintamojo naudojimas duomenims gauti iš failo

Ši komanda ieškos žodžio „Spausdintuvas“ byloje daiktų.txt. Jei kuri nors failo eilutė prasideda „Spausdintuvastada ji išsaugos 1šv, 2nd ir 3rd laukus į tris kintamuosius. vardas ir kaina bus spausdinami kintamieji.

$ awk '/ Printer / name = $ 1; brand = 2 $; price = 3 $; print "item name =" name;
spausdinti „item price =„ price “elementus.txt

Išvestis:

Eikite į turinį

awk masyvai

Abi gali būti naudojamos tiek skaitinės, tiek susijusios masyvos. Masyvo kintamojo deklaracija awk yra tokia pati kaip ir kitų programavimo kalbų. Kai kurie masyvų naudojimo būdai parodyti šiame skyriuje.

Asociatyvusis masyvas: 

Masyvo indeksas bus bet kokia asociacinio masyvo eilutė.  Šiame pavyzdyje deklaruojamas ir atspausdinamas asociacinis trijų elementų masyvas.

$ awk 'BEGIN
knygos ["Web Design"] = "Mokytis HTML 5";
knygos ["Web Programming"] = "PHP ir MySQL"
knygos ["PHP Framework"] = "Mokymasis Laravel 5"
printf "% s \ n% s \ n% s \ n", knygos ["Interneto dizainas"], knygos ["Žiniatinklio programavimas"],
knygos [„PHP Framework“] '

Išvestis:

Skaitmeninis masyvas:

Skaitmeninis trijų elementų masyvas yra deklaruojamas ir atspausdinamas atskiriant skirtuką.

$ awk 'BEGIN
skaičius [0] = 80;
skaičius [1] = 55;
skaičius [2] = 76;

# spausdinti masyvo elementus
printf "Masyvo reikšmės:% d \ t% d \ t% d \ n", skaičius [0], skaičius [1], skaičius [2];

Išvestis:

Eikite į turinį

awk kilpa

„Awk“ palaiko trijų tipų kilpas. Šių kilpų panaudojimas čia parodytas naudojant tris pavyzdžius.

Nors kilpa:

o ciklas, naudojamas šioje komandoje, kartosis 5 kartus ir išeis iš pertraukos sakinio kilpos.

$ Awk 'PRADŽIA n = 1; o (n <= 10) if(n > 5) pertrauka; spausdinti n; n ++ '

Išvestis:

Dėl kilpos:

Kilpa, kuri naudojama šioje komandoje awk, apskaičiuos sumą nuo 1 iki 10 ir išspausdins vertę.

$ awk 'BEGIN suma = 0; už (n = 1; n <= 10; n++) sum=sum+n; print sum '

Išvestis:

„Do-while“ kilpa:

šios komandos „do-while“ kilpa atspausdins visus lyginius skaičius nuo 10 iki 5.

$ awk 'BEGIN skaitiklis = 10; do if (skaitiklis% 2 == 0) atspausdinti skaitiklį; skaitiklis--
o (skaitiklis> 5) '

Išvestis:

Eikite į turinį

awk atspausdinti pirmąjį stulpelį

Pirmąjį bet kurio failo stulpelį galima atsispausdinti naudojant $ 1 kintamąjį awk. Bet jei pirmojo stulpelio reikšmėje yra keli žodžiai, spausdinamas tik pirmasis pirmojo stulpelio žodis. Naudojant konkretų skiriklį, pirmąjį stulpelį galima tinkamai atspausdinti. Sukurkite tekstinį failą pavadinimu studentų.txt turinį. Pirmame stulpelyje pateikiamas dviejų žodžių tekstas.

Studentai.txt

Kaniz Fatema 30tūkst partija
Abiras Hossainas 35tūkst partija
Jonas Abraomas 40tūkst partija

Vykdykite komandą awk be jokio skiriamojo. Pirmojo stulpelio pirma dalis bus atspausdinta.

$ awk 'print $ 1' mokiniai.txt

Paleiskite komandą awk naudodami šį skiriklį. Bus atspausdinta visa pirmojo stulpelio dalis.

$ awk -F '\\ s \\ s' 'print $ 1' mokiniai.txt

Išvestis:

Eikite į turinį

awk atspausdinti paskutinį stulpelį

USD (NF) kintamasis gali būti naudojamas atspausdinti paskutinį bet kurio failo stulpelį. Šios awk komandos atspausdins paskutinę ir visą paskutinio stulpelio dalį studentai.txt failą.

$ awk 'print $ (NF)' studentai.txt
$ awk -F '\\ s \\ s' 'print $ (NF)' mokiniai.txt

Išvestis:

Eikite į turinį

awk su grep

„grep“ yra dar viena naudinga „Linux“ komanda, ieškanti turinio faile pagal bet kurią įprastą išraišką. Kaip „awk“ ir „grep“ komandas galima naudoti kartu, parodyta kitame pavyzdyje. grep komanda naudojama ieškant informacijos apie darbuotojo tapatybę, "1002'iš darbuotojas.txt failą. Grep komandos išvestis bus siunčiama į awk kaip įvesties duomenys. 5% premija bus skaičiuojama ir atspausdinta pagal darbuotojo atlyginimą “1002 ' pagal awk komandą.

$ katės darbuotojas.txt
$ grep „1002“ darbuotojas.txt | awk -F '\ t' 'print $ 2 "gaus $" ($ 3 * 5) / 100 "premija"'

Išvestis:

Eikite į turinį

awk su BASH byla

Kaip ir kita „Linux“ komanda, „awk“ komanda taip pat gali būti naudojama BASH scenarijuje. Sukurkite tekstinį failą pavadinimu klientų.txt turinį. Kiekvienoje šio failo eilutėje yra informacija apie keturis laukus. Tai yra kliento ID, vardas, adresas ir mobiliojo telefono numeris, kuriuos skiria "/".

klientų.txt

AL4934 / Charlesas M Brunneris / 4838 Beeghley gatvė, Hantsvilis, Alabama / 256-671-7942
CA5455 / Virginia S Mota / 930 Bassel Street, VALLECITO, Kalifornija / 415-679-5908
IL4855 / Ann A Neale / 1932 m. Patterson Fork Road, Čikaga, Ilinojus / 773-550-5107

Sukurkite bash failą pavadinimu item_search.bash su tokiu scenarijumi. Pagal šį scenarijų būsenos vertė bus paimta iš vartotojo ir ieškoma klientų.txt byla grep komandą ir perduota komandai „awk“ kaip įvestį. Awk komanda perskaitys 2nd ir 4tūkst kiekvienos eilutės laukai. Jei įvesties vertė sutampa su bet kuria būsenos reikšme klientų.txt failą, tada jis atspausdins kliento vardas ir Mobilaus telefono numeris, priešingu atveju atspausdins pranešimą „Nerastas klientas“.

item_search.bash

#!/ bin / bash
echo "Įveskite valstybės pavadinimą:"
skaityti valstybę
klientai = 'grep "$ state" klientai.txt | awk -F "/" 'print "Kliento vardas:" 2 USD ",
Mobilusis numeris: „$ 4“
jei ["$ klientai" != ""]; tada
echo $ klientai
Kitas
aidas "Nerastas klientas"
fi

Norėdami parodyti išvestis, vykdykite šias komandas.

$ kačių klientų.txt
$ bash item_search.bash

Išvestis:

Eikite į turinį

awk su sed

Kitas naudingas „Linux“ paieškos įrankis yra sed. Ši komanda gali būti naudojama ieškant ir keičiant bet kokio failo tekstą. Šis pavyzdys parodo awk komandos naudojimą su sed komandą. Čia „sed“ komanda ieškos visų darbuotojų vardų, prasidedančių „'ir pereina į komandą awk kaip įvestį. awk atspausdins darbuotoją vardas ir ID po formatavimo.

$ katės darbuotojas.txt
$ sed -n '/ J / p' darbuotojas.txt | awk -F '\ t' 'printf "% s (% s) \ n", $ 2, $ 1'

Išvestis:

Eikite į turinį

Išvada:

Tinkamai filtravę duomenis, galite naudoti komandą awk, kad sukurtumėte įvairių tipų ataskaitas, remdamiesi bet kokiais lentelių arba atskirtais duomenimis. Tikiuosi, kad sužinosite, kaip veikia „awk“ komanda, pasipraktikavę šioje pamokoje pateiktus pavyzdžius.

Žymeklis peršoka arba juda atsitiktinai, kai rašote „Windows 10“
Jei pastebite, kad pelės žymeklis peršoka arba juda pats, automatiškai, atsitiktinai, kai vedate „Windows“ nešiojamąjį kompiuterį ar kompiuterį, kai k...
Kaip pakeisti pelės ir jutiklinių plokščių slinkimo kryptį sistemoje „Windows 10“
Pelė ir Jutiklinė dalisTai ne tik palengvina skaičiavimus, bet ir efektyvesnį bei mažiau laiko reikalaujantį. Mes neįsivaizduojame gyvenimo be šių pri...
Kaip pakeisti pelės žymeklio ir žymeklio dydį, spalvą ir schemą sistemoje „Windows 10“
„Windows 10“ pelės žymeklis ir žymeklis yra labai svarbūs operacinės sistemos aspektai. Tai galima pasakyti ir apie kitas operacines sistemas, taigi, ...