„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:
- awk su printf
- awk skilti baltoje erdvėje
- awk pakeisti ribotuvą
- awk su skirtukais atskirtais duomenimis
- awk su csv duomenimis
- awk regex
- awk nejautrus regex
- awk su nf (laukų skaičius) kintamuoju
- awk gensub () funkcija
- awk su rand () funkcija
- awk vartotojo apibrėžta funkcija
- aha jei
- awk kintamieji
- awk masyvai
- awk kilpa
- awk atspausdinti pirmą stulpelį
- awk atspausdinti paskutinį stulpelį
- awk su grep
- awk su bash scenarijaus failu
- 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:
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:
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:
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ėjeServerio 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.txtIšė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:
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, telefonas1, 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.csvIšė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.awkPRADĖ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.csvIšėjimas:
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 yrapopuliari 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:
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:
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.txtIšėjimas:
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 gawkSukurkite teksto failą pavadinimu „ salesinfo.txt “Su šiuo turiniu, kad galėtumėte praktikuoti šį pavyzdį. Čia laukai yra atskirti skirtuku.
salesinfo.txt
Mano 700 000Jū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 -jieIšėjimas:
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:
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.nusileiskIšėjimas:
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 USDA4Tech 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.txtIšė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:
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:
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:
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:
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ūkstpartijaAbiras Hossainas 35tūkstpartija
Jonas Abraomas 40tūkstpartija
Vykdykite komandą awk be jokių ribotuvų. Bus atspausdinta pirmojo stulpelio pirmoji dalis.
$awk „{print $ 1}“studentai.txtVykdykite komandą awk naudodami šį skyriklį. Bus išspausdinta visa pirmojo stulpelio dalis.
$awk -F „\ s \ s“ „{print $ 1}“studentai.txtIšėjimas:
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:
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:
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-7942CA5455 / 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/bashiš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:
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:
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.