20 nemalonių pavyzdžių

20 Awk Examples



„Linux“ operacinėje sistemoje yra daug įrankių, skirtų ieškoti ir generuoti ataskaitą iš teksto duomenų ar failo. Naudodamas „awk“, „grep“ ir „sed“ komandas vartotojas gali lengvai atlikti daugelio tipų paieškas, pakeisti ir kurti ataskaitas. awk nėra tik komanda. Tai scenarijų kalba, kurią galima naudoti tiek iš terminalo, tiek iš „awk“ failo. Jis palaiko kintamąjį, sąlyginį teiginį, masyvą, kilpas ir tt, kaip ir kitos scenarijų kalbos. Jis gali skaityti bet kokį failo turinį eilutėmis po eilutės ir atskirti laukus ar stulpelius pagal konkretų ribotuvą. Jis taip pat palaiko įprastą išraišką ieškant tam tikros eilutės teksto turinyje ar faile ir imasi veiksmų, jei randama atitiktis. Kaip galite naudoti „awk“ komandą ir scenarijų, šioje instrukcijoje parodyta naudojant 20 naudingų pavyzdžių.

Turinys:

  1. awk su printf
  2. awk skilti baltoje erdvėje
  3. awk pakeisti ribotuvą
  4. awk su skirtukais atskirtais duomenimis
  5. awk su csv duomenimis
  6. awk regex
  7. awk 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. aha jei
  13. awk kintamieji
  14. awk masyvai
  15. awk kilpa
  16. awk atspausdinti pirmą stulpelį
  17. awk atspausdinti paskutinį stulpelį
  18. awk su grep
  19. awk su bash scenarijaus failu
  20. awk su sed

„Awk“ naudojimas naudojant „printf“

printf () funkcija naudojama formatuoti bet kurią išvestį daugelyje programavimo kalbų. Šią funkciją galima naudoti su awk komandą, skirtą generuoti įvairių tipų suformatuotus išėjimus. „awk“ komanda dažniausiai naudojama bet kokiam tekstiniam failui. Sukurkite teksto failą pavadinimu darbuotojas.txt su toliau pateiktu turiniu, kur laukai yra atskirti skirtuku („ t“).







darbuotojas.txt



1001 Jonas sena 40000
1002 Jafar Iqbal 60000
1003 Meherio nigaras 30000
1004 Jonny Liver 70000

Ši „awk“ komanda skaitys duomenis iš darbuotojas.txt eilutę po eilutės ir atspausdinkite pirmąjį, suformatuotą po failo. Čia, %10s n reiškia, kad išvestis bus 10 simbolių. Jei išvesties vertė yra mažesnė nei 10 simbolių, tarpai bus pridėti vertės pradžioje.



$ awk'{printf'%10s n„, 1 USD“darbuotojas.txt

Išėjimas:





Eikite į turinį



awk skilti baltoje erdvėje

Numatytasis bet kokio teksto skaidymo žodžių ar laukų skyriklis yra tarpas. „awk“ komanda gali priimti teksto vertę kaip įvestį įvairiais būdais. Įvesties tekstas perduodamas iš išmetė komandą šiame pavyzdyje. Tekstas, ' Man patinka programavimas “Bus padalintas pagal numatytąjį skyriklį, erdvės , o trečias žodis bus išspausdintas kaip išvestis.

$išmetė 'Man patinka programuoti' | awk „{print $ 3}“

Išėjimas:

Eikite į turinį

awk pakeisti ribotuvą

„awk“ komanda gali būti naudojama norint pakeisti bet kokio failo turinio ribotuvą. Tarkime, turite teksto failą pavadinimu telefonas.txt su tokiu turiniu, kur „:“ naudojamas kaip failo turinio skyriklis.

telefonas.txt

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

Vykdykite šią awk komandą, kad pakeistumėte ribotuvą, ':' pagal '-' į failo turinį, telefonas.txt .

$ cat phone.txt
$ awk '$ 1 = $ 1' FS = ':' OFS = '-' phone.txt

Išėjimas:

Eikite į turinį

awk su skirtukais atskirtais duomenimis

„awk“ komandoje yra daug integruotų kintamųjų, kurie naudojami tekstui skaityti skirtingais būdais. Du iš jų yra FS ir OFS . FS yra įvesties laukų skyriklis ir OFS yra išvesties laukų atskyrimo kintamieji. Šių kintamųjų naudojimas parodytas šiame skyriuje. Sukurti skirtuką atskiras failas pavadintas input.txt turinį, kad galėtumėte išbandyti jų naudojimą FS ir OFS kintamieji.

Input.txt

Skriptų kalba kliento pusėje
Serverio pusės scenarijų kalba
Duomenų bazės serveris
Tinklapio serveris

FS kintamojo naudojimas su skirtuku

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

$awk „{print $ 1}“ FS=' t'input.txt

Išėjimas:

Naudojant kintamąjį OFS su skirtuku

Ši awk komanda atspausdins 9tūkst ir 5tūkst laukai „Ls -l“ komandų išvestis su skirtukų skyrikliu, atspausdinus stulpelio pavadinimą vardas ir Dydis . Čia, OFS kintamasis naudojamas išvesties formatavimui skirtuku.

$ls -jie
$ls -jie | awk -v OFS=' t' 'BEGIN {printf'%s t%s n ',' Name ',' Size '} {print $ 9, $ 5}'

Išėjimas:

Eikite į turinį

awk su CSV duomenimis

Bet kurio CSV failo turinį galima išanalizuoti keliais būdais, naudojant komandą awk. Sukurkite CSV failą pavadinimu „ klientas.csv “Su šiuo turiniu, kad galėtumėte taikyti„ awk “komandą.

klientas.txt

ID, vardas, el. Paštas, telefonas
1, Sophia, [apsaugotas el. Paštas], (862) 478-7263
2, Amelia, [email protected], (530) 764-8000
3, Emma, ​​[apsaugotas el. Paštas], (542) 986-2390

Skaitomas vienas CSV failo laukas

„-F“ parinktis naudojama su „awk“ komanda, kad būtų galima nustatyti skiriamąjį ženklą kiekvienai failo eilutei padalyti. Ši awk komanda atspausdins vardas laukas klientas.csv failą.

$katėklientas.csv
$awk -F ',' „{print $ 2}“klientas.csv

Išėjimas:

Kelių laukų skaitymas derinant su kitu tekstu

Ši komanda išspausdins tris laukus klientas.csv derinant pavadinimo tekstą, Vardas, el. Paštas ir telefonas . Pirmoji eilutė klientas.csv faile yra kiekvieno lauko pavadinimas. NE kintamajame yra failo eilutės numeris, kai awk komanda analizuoja failą. Šiame pavyzdyje NR kintamasis naudojamas praleisti pirmąją failo eilutę. Išvestis parodys 2antra, 3rdir 4tūkstvisų eilučių laukai, išskyrus pirmąją eilutę.

$awk -F ',' „NR> 1 {spausdinti“ Vardas: „2 USD“, el. Paštas: „3 USD“, telefonas: „4 USD“klientas.csv

Išėjimas:

CSV failo skaitymas naudojant „awk“ scenarijų

„awk“ scenarijų galima vykdyti paleidus „awk“ failą. Šiame pavyzdyje parodyta, kaip galite sukurti „awk“ failą ir jį paleisti. Sukurkite failą pavadinimu awkcsv.awk su šiuo kodu. PRADĖTI raktinis žodis naudojamas scenarijuje informuoti komandą awk vykdyti scenarijų PRADĖTI prieš atlikdami kitas užduotis. Čia laukų atskyriklis ( FS ) yra naudojamas skilimo ribotuvui apibrėžti ir 2antrair 1stlaukai bus atspausdinti pagal formatą, naudojamą funkcijoje printf ().

awkcsv.awk
PRADĖTI{FS= ','} { printf '% 5s (% s) n',$2,$1}

Bėgti awkcsv.awk failą su turiniu klientas.csv failą naudodami šią komandą.

$awk -fawkcsv.awk klientas.csv

Išėjimas:

Eikite į turinį

awk regex

Įprasta išraiška yra modelis, naudojamas ieškoti bet kurioje teksto eilutėje. Naudojant įprastą išraišką, labai lengvai galima atlikti įvairių tipų sudėtingas paieškos ir pakeitimo užduotis. Šiame skyriuje parodyta keletas paprastų reguliarios išraiškos su komanda awk naudojimo būdų.

Atitinkantis charakterisnustatyti

Ši komanda atitiks žodį Kvailys ar kvailys arba Saunus su įvesties eilute ir atspausdinkite, jei žodis randa. Čia, Lėlė nesutaps ir nespausdins.

$printf 'Kvailys nSaunus nLėlė nbool ' | awk '/[FbC] ool/'

Išėjimas:

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

„^“ simbolis naudojamas įprastoje išraiškoje ieškoti bet kokio modelio eilutės pradžioje. ' „Linux“ žodžio bus ieškoma kiekvienos teksto eilutės pradžioje šiame pavyzdyje. Čia dvi eilutės prasideda tekstu, „Linux“ “Ir šios dvi eilutės bus rodomos išvestyje.

$išmetė -Ir „„ Linux “galima laisvai naudotis nTai atviro kodo programinė įranga nLinuxHint yra
populiari tinklaraščio svetainė “
| awk '/^Linux/'

Išėjimas:

Ieškoma eilutė eilutės pabaigoje

„$“ simbolis yra naudojamas įprastoje išraiškoje ieškoti bet kokio šablono kiekvienos teksto eilutės pabaigoje. ' Scenarijus “Žodžio ieškoma šiame pavyzdyje. Čia dvi eilutės yra žodis, Scenarijus eilutės gale.

$išmetė -Ir „PHP scenarijus n„JavaScript“ nVaizdinis programavimas “ | awk '/Scenarijus $/'

Išėjimas:

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

„^“ simbolis nurodo teksto pradžią, kai jis naudojamas prieš bet kokį eilutės modelį („ / ^… /“) arba prieš bet kokį simbolių rinkinį, kurį paskelbė ^ […] . Jei „^“ simbolis naudojamas trečiojo skliaustelio viduje, [^…], tada skliausteliuose esantis apibrėžtas simbolių rinkinys bus praleistas paieškos metu. Ši komanda ieškos bet kurio žodžio, kuris neprasideda „F“ bet baigiasi „ ool “. Saunus ir bool bus atspausdintas pagal modelį ir teksto duomenis.

$ printf 'Kvailys nSaunus nLėlė nbool ' |awk' / [^ F] ool /'

Išėjimas:

Eikite į turinį

awk nejautrus regex

Pagal numatytuosius nustatymus įprastoji išraiška ieško didžiųjų ir mažųjų raidžių, kai ieškoma bet kurio eilutės modelio. Didžiųjų ir mažųjų raidžių nejautros paiešką galima atlikti naudojant komandą awk naudojant reguliariąją išraišką. Toliau pateiktame pavyzdyje nuleisti() funkcija naudojama didžiųjų ir mažųjų raidžių paieškai atlikti. Čia pirmas kiekvienos įvesties teksto eilutės žodis bus paverstas mažosiomis raidėmis naudojant nuleisti() funkciją ir atitikti reguliariosios išraiškos modelį. aukštyn () funkcija taip pat gali būti naudojama šiam tikslui, šiuo atveju modelis turi būti apibrėžtas didžiosiomis raidėmis. Šiame pavyzdyje apibrėžtame tekste yra paieškos žodis, 'Žiniatinklis “Dviem eilutėmis, kurios bus atspausdintos kaip išvestis.

$išmetė -Ir 'Interneto svetainės dizainas ninterneto kūrimas nSistema' | awk 'tolower ($ 0) ~ /^web /;'

Išėjimas:

Eikite į turinį

awk su NF (laukų skaičius) kintamuoju

NF yra integruotas „awk“ komandos kintamasis, naudojamas skaičiuojant bendrą laukų skaičių kiekvienoje įvesties teksto eilutėje. Sukurkite bet kurį teksto failą, kuriame yra kelios eilutės ir keli žodžiai. įvestį.txt čia naudojamas failas, sukurtas ankstesniame pavyzdyje.

Naudojant NF iš komandinės eilutės

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

$ cat input.txt
$ awk '{print NF}' input.txt

Išėjimas:

NF naudojimas awk faile

Sukurkite „awk“ failą pavadinimu suskaičiuoti.atsisveikinti 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.atsisveikinti

{spausdinti $0}
{spausdinti'[Iš viso laukų:'NF']'}

Paleiskite scenarijų naudodami šią komandą.

$awk -fcount.awk input.txt

Išėjimas:

Eikite į turinį

awk gensub () funkcija

getub () yra pakeitimo funkcija, naudojama ieškoti eilutės pagal tam tikrą ribotuvą arba reguliarios išraiškos modelį. Ši funkcija apibrėžta 'Šlykštus' paketas, kuris nėra įdiegtas pagal numatytuosius nustatymus. Šios funkcijos sintaksė pateikta žemiau. Pirmajame parametre yra įprastos išraiškos šablonas arba paieškos skirtukas, antrajame - pakeičiamasis tekstas, trečiame parametre nurodoma, kaip bus atlikta paieška, o paskutiniame parametre yra tekstas, kuriame ši funkcija bus taikoma.

Sintaksė:

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

Norėdami įdiegti, paleiskite šią komandą gaudyti pakuotė, skirta naudoti getub () funkcija su „awk“ komanda.

$ sudo apt-get install gawk

Sukurkite teksto failą pavadinimu „ salesinfo.txt “Su šiuo turiniu, kad galėtumėte praktikuoti šį pavyzdį. Čia laukai yra atskirti skirtuku.

salesinfo.txt

Mano 700 000
Jūsų 800 000
Trečiadienis 750000
Surinkite 200 000
Penktadienis 430000
Šeštadienis 820000

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

$awk '{x = gensub (' t ',' ',' G ', 2 USD); printf x '+'} PABAIGA {spausdinti 0} 'salesinfo.txt| bc -jie

Išėjimas:

Eikite į turinį

awk su rand () funkcija

eilutė () funkcija naudojama bet kuriam atsitiktiniam skaičiui, didesniam nei 0 ir mažesniam nei 1. generuoti. Taigi, jis visada sugeneruos trupmeninį skaičių, mažesnį už 1. Toliau pateikta komanda sugeneruos trupmeninį atsitiktinį skaičių ir padaugins reikšmę iš 10, kad gautumėte skaičių daugiau nei 1. Taikant printf () funkciją bus atspausdintas trupmeninis skaičius su dviem skaitmenimis po kablelio. Jei šią komandą paleisite kelis kartus, kiekvieną kartą gausite skirtingą išvestį.

$awk 'BEGIN {printf' Skaičius =%. 2f n ', rand ()*10}'

Išėjimas:

Eikite į turinį

awk vartotojo apibrėžta funkcija

Visos ankstesnių pavyzdžių funkcijos yra integruotos. Bet jūs galite paskelbti vartotojo nustatytą funkciją savo „awk“ scenarijuje, kad atliktumėte bet kokią konkrečią užduotį. Tarkime, norite sukurti pasirinktinę funkciją stačiakampio plotui apskaičiuoti. Norėdami atlikti šią užduotį, sukurkite failą pavadinimu „ plotas.nusileisk “Su šiuo 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 čia naudojama norint įvesti informaciją iš vartotojo.

plotas.nusileisk

# Apskaičiuokite plotą
funkcijasrityje(aukščio,plotis){
grįžtiaukščio*plotis
}

# Pradeda vykdyti
PRADĖTI{
spausdinti'Įveskite aukščio vertę:'
getline h< '-'
spausdinti'Įveskite pločio reikšmę:'
getline w< '-'
spausdinti'Plotas ='srityje(h,į)
}

Paleiskite scenarijų.

$awk -fplotas.nusileisk

Išėjimas:

Eikite į turinį

aha jei pavyzdys

„awk“ palaiko sąlyginius teiginius, kaip ir kitos standartinės programavimo kalbos. Šiame skyriuje pateikiami trijų tipų teiginiai, naudojant tris pavyzdžius. Sukurkite teksto failą pavadinimu items.txt su tokiu turiniu.

items.txt

HDD „Samsung“ 100 USD
A4Tech pelė
HP spausdintuvas 200 USD

Paprastas pavyzdys :

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

$awk '{if ($ 3 ==' ') print' Kainos lauko trūksta eilutėje 'NR}'items.txt

Išėjimas:

jei-kitas pavyzdys:

Ši komanda išspausdins prekės kainą, jei 3rdeilutėje yra laukas, kitaip jis atspausdins klaidos pranešimą.

$ awk'{if ($ 3 ==' ') print' Kainos lauko nėra '
Kitos spaudos „elemento kaina yra„ 3 USD “
elementus.txt

Išėjimas:

jei-kitas-jei pavyzdys:

Kai toliau nurodyta 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 vertė nesutampa su jokiomis sąlygomis, spausdinimas nepavyks.

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

Išėjimas:

Eikite į turinį

awk kintamieji

Kintamojo awk deklaracija yra panaši į apvalkalo kintamojo deklaraciją. Yra skirtumas skaitant kintamojo vertę. „$“ Simbolis naudojamas su apvalkalo kintamojo kintamojo pavadinimu vertei nuskaityti. Tačiau norint skaityti vertę, nereikia naudoti „$“ su kintamuoju awk.

Naudojant paprastą kintamąjį:

Ši komanda paskelbs kintamąjį pavadinimu 'Svetainė' ir tam kintamajam priskiriama eilutės reikšmė. Kintamojo vertė išspausdinama kitame sakinyje.

$awk 'BEGIN {site =' LinuxHint.com '; spausdinimo svetainė} '

Išėjimas:

Kintamojo naudojimas duomenims iš failo gauti

Ši komanda ieškos žodžio „Spausdintuvas“ byloje items.txt . Jei kuri nors failo eilutė prasideda „Spausdintuvas “, Tada bus išsaugota vertė 1st , 2antra ir 3rd laukus į tris kintamuosius. vardas ir kaina kintamieji bus spausdinami.

$ awk'/ Spausdintuvas/ {name = $ 1; brand = 2 USD; price = 3 USD; print' item name = 'name;
spausdinti 'elemento kaina =' kaina} '
elementus.txt

Išėjimas:

Eikite į turinį

awk masyvai

„Awk“ gali būti naudojami ir skaitiniai, ir susiję masyvai. Masyvo kintamojo deklaracija „awk“ yra tokia pati kaip ir kitoms programavimo kalboms. Kai kurie masyvų naudojimo būdai parodyti šiame skyriuje.

Asociacinis masyvas:

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

$awk 'BEGIN {
books ['Web Design'] = 'Mokomasi HTML 5';
books ['Web Programming'] = 'PHP ir MySQL'
books ['PHP Framework'] = 'Mokomasi Laravel 5'
printf '%s n%s n%s n', knygos ['Web Design'], knygos ['Web Programming'],
knygos [„PHP Framework“]} “

Išėjimas:

Skaitmeninis masyvas:

Skaitinis trijų elementų masyvas deklaruojamas ir atspausdinamas atskiriant skirtuką.

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

# spausdinimo masyvo elementų
printf 'Masyvo reikšmės: %d t%d t%d n“, skaičius [0], skaičius [1], skaičius [2]; } '

Išėjimas:

Eikite į turinį

awk kilpa

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

Nors kilpa:

o kilpa, kuri naudojama šioje komandoje, kartosis 5 kartus ir išeis iš ciklo, norėdama pertraukti sakinį.

$ awk „PRADŽIA {n = 1; o (n 5) pertrauka; spausdinti n; n ++}} '

Išėjimas:

Dėl kilpos:

Ciklui, kuris naudojamas šioje awk komandoje, bus apskaičiuota suma nuo 1 iki 10 ir atspausdinta vertė.

$awk 'PRADŽIA {suma = 0; už (n = 1; n<= 10; n++) sum=sum+n; print sum }'

Išėjimas:

„Do-while“ kilpa:

šios komandos atlikimo ciklas spausdins visus lyginius skaičius nuo 10 iki 5.

$awk 'PRADŽIA {skaitiklis = 10; do {if (skaitiklis%2 == 0) spausdinti skaitiklis; skaitiklis-}
o (skaitiklis> 5)} '

Išėjimas:

Eikite į turinį

awk atspausdinti pirmą stulpelį

Pirmąjį bet kurio failo stulpelį galima atspausdinti naudojant „$ 1“ kintamąjį „awk“. Bet jei pirmo stulpelio vertėje yra keli žodžiai, spausdinamas tik pirmasis pirmojo stulpelio žodis. Naudojant tam tikrą ribotuvą, pirmą stulpelį galima tinkamai atspausdinti. Sukurkite teksto failą pavadinimu studentai.txt su tokiu turiniu. Pirmame stulpelyje yra dviejų žodžių tekstas.

Studentai.txt

Kanizas Fatema 30tūkstpartija
Abiras Hossainas 35tūkstpartija
Jonas Abraomas 40tūkstpartija

Vykdykite komandą awk be jokių ribotuvų. Bus atspausdinta pirmojo stulpelio pirmoji dalis.

$awk „{print $ 1}“studentai.txt

Vykdykite komandą awk naudodami šį skyriklį. Bus išspausdinta visa pirmojo stulpelio dalis.

$awk -F „\ s \ s“ „{print $ 1}“studentai.txt

Išėjimas:

Eikite į turinį

awk atspausdinti paskutinį stulpelį

$ (NF) kintamasis gali būti naudojamas spausdinti paskutinį bet kurio failo stulpelį. Šios „awk“ komandos išspausdins paskutinę ir visą paskutinio stulpelio dalį studentai.txt failą.

$awk '{print $ (NF)}'studentai.txt
$awk -F „\ s \ s“ '{print $ (NF)}'studentai.txt

Išėjimas:

Eikite į turinį

awk su grep

grep yra dar viena naudinga „Linux“ komanda ieškoti failo turinio pagal bet kokią reguliarią išraišką. Toliau pateiktame pavyzdyje parodyta, kaip gali būti naudojamos abi komandos „awk“ ir „grep“. sukibimas komanda naudojama ieškant informacijos apie darbuotojo ID, ' 1002 “Iš darbuotojas.txt failą. Komandos grep išvestis bus siunčiama į awk kaip įvesties duomenys. 5% premija bus suskaičiuota ir išspausdinta pagal darbuotojo ID atlyginimą, ' 1002 ' pagal awk komandą.

$katėdarbuotojas.txt
$sukibimas „1002“darbuotojas.txt| awk -F ' t' „{print $ 2“ gaus $ “($ 3*5)/100 premiją“} “

Išėjimas:

Eikite į turinį

awk su BASH failu

Kaip ir kita „Linux“ komanda, „awk“ komanda taip pat gali būti naudojama BASH scenarijuje. Sukurkite teksto failą pavadinimu klientai.txt su tokiu turiniu. Kiekvienoje šio failo eilutėje yra informacija apie keturis laukus. Tai yra kliento ID, vardas, adresas ir mobiliojo telefono numeris, kurie yra atskirti ‘/ “.

klientai.txt

AL4934 / Charles M Brunner / 4838 Beeghley Street, Huntsville, Alabama / 256-671-7942
CA5455 / Virginia S Mota / 930 Bassel Street, VALLECITO, Kalifornija / 415-679-5908
IL4855 / Ann A Neale / 1932 Patterson Fork Road, Čikaga, Ilinojus / 773-550-5107

Sukurkite bash failą pavadinimu item_search.bash su šiuo scenarijumi. Pagal šį scenarijų būsenos vertė bus paimta iš vartotojo ir joje bus ieškoma klientai.txt paduoti byla sukibimas komandą ir perdavė komandai awk kaip įvestį. Awk komanda perskaitys 2antra ir 4tūkst kiekvienos eilutės laukai. Jei įvesties vertė sutampa su bet kokia būsenos reikšme klientai.txt failą, tada jis atspausdins kliento vardas ir Mobilaus telefono numeris , kitaip jis išspausdins pranešimą Nerasta kliento .

item_search.bash

#!/bin/bash
išmetė „Įveskite valstijos pavadinimą:“
skaitytibūsena
klientų=``sukibimas '$ valstija'klientai.txt| awk -F '/' '{print' Kliento vardas: '$ 2,',
Mobiliojo telefono numeris: „$ 4}“
``
jei [ '$ klientų' !='' ];tada
išmetė $ klientų
Kitas
išmetė „Nerasta kliento“
būti

Norėdami parodyti rezultatus, paleiskite šias komandas.

$katėklientai.txt
$muštiitem_search.bash

Išėjimas:

Eikite į turinį

awk su sed

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

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

Išėjimas:

Eikite į turinį

Išvada:

Galite naudoti komandą „awk“, kad sukurtumėte skirtingų tipų ataskaitas, remdamiesi bet kokiais lenteliniais ar atribotais duomenimis, tinkamai filtravę duomenis. Tikimės, kad sužinosite, kaip veikia „awk“ komanda, išbandę šioje pamokoje pateiktus pavyzdžius.