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:
- awk su printf
- awk suskaidyti ant balto ploto
- awk pakeisti ribotuvą
- awk su skirtukais atskirtais duomenimis
- awk su csv duomenimis
- awk regex
- awk case nejautrus regex
- awk su nf (laukų skaičius) kintamuoju
- awk gensub () funkcija
- awk su rand () funkcija
- AWK vartotojo apibrėžta funkcija
- awk jei
- awk kintamieji
- awk masyvai
- awk kilpa
- awk atspausdinti pirmąjį stulpelį
- awk atspausdinti paskutinį stulpelį
- awk su grep
- awk su bash scenarijaus byla
- 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 400001002 „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.txtIš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ų kalbaServerio 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.txtIš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, telefonas1, 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.csvIš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.awkPRADŽ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.csvIš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 “yrapopuliari 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 $ 0print "[Iš viso laukų:" NF "]"
Paleiskite scenarijų naudodami šią komandą.
$ awk -f skaičius.awk įvestis.txtIš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 gawkSukurkite tekstinį failą pavadinimu „pardavimo informacija.txt„su tokiu turiniu, kad galėtumėte praktikuoti šį pavyzdį. Čia laukai yra atskirti skirtuku.
pardavimo informacija.txt
Pirmadienis 700000800000 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 -lIš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.awkIš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 USDPelė 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.txtIš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 'BEGINknygos ["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 'BEGINskaič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 partijaAbiras 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.txtPaleiskite komandą awk naudodami šį skiriklį. Bus atspausdinta visa pirmojo stulpelio dalis.
$ awk -F '\\ s \\ s' 'print $ 1' mokiniai.txtIš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-7942CA5455 / 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 / bashecho "Į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ų „Dž'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.