20 dīvaini piemēri

20 Awk Examples



Linux operētājsistēmā ir daudz lietderības rīku, lai meklētu un ģenerētu pārskatu no teksta datiem vai faila. Lietotājs var viegli veikt daudzu veidu meklēšanas, aizstāšanas un ziņojumu ģenerēšanas uzdevumus, izmantojot komandas awk, grep un sed. awk nav tikai komanda. Tā ir skriptu valoda, ko var izmantot gan no termināļa, gan no awk faila. Tā atbalsta mainīgo, nosacīto paziņojumu, masīvu, cilpas utt., Tāpat kā citas skriptu valodas. Tas var nolasīt jebkuru faila saturu pa rindām un atdalīt laukus vai kolonnas, pamatojoties uz noteiktu atdalītāju. Tā arī atbalsta regulāro izteiksmi, lai meklētu noteiktu virkni teksta saturā vai failā, un veic darbības, ja tiek atrasta atbilstība. Šajā pamācībā ir parādīts, kā izmantot komandu awk un skriptu, izmantojot 20 noderīgus piemērus.

Saturs:

  1. awk ar printf
  2. awk sadalīties baltajā telpā
  3. awk, lai mainītu norobežotāju
  4. awk ar datiem, kas atdalīti ar cilnēm
  5. awk ar csv datiem
  6. awk regex
  7. awk reģistru nejutīga regulārā izteiksme
  8. awk ar nf (lauku skaits) mainīgo
  9. awk gensub () funkcija
  10. awk ar rand () funkciju
  11. awk lietotāja definēta funkcija
  12. awk, ja
  13. awk mainīgie
  14. awk masīvi
  15. awk cilpa
  16. awk, lai izdrukātu pirmo kolonnu
  17. awk, lai izdrukātu pēdējo kolonnu
  18. awk ar grep
  19. awk ar bash skripta failu
  20. awk ar sed

Izmantojot awk ar printf

printf () funkcija tiek izmantota, lai formatētu jebkuru izvadi lielākajā daļā programmēšanas valodu. Šo funkciju var izmantot kopā ar awk komandu, lai ģenerētu dažāda veida formatētus izvadus. komandu awk galvenokārt izmanto jebkuram teksta failam. Izveidojiet teksta failu ar nosaukumu darbinieks.txt ar tālāk norādīto saturu, kur lauki ir atdalīti ar cilni (“ t”).







darbinieks.txt



1001 Jānis sena 40000
1002 Jafar Iqbal 60000
1003 Meher Nigar 30000
1004 Džonijs Aknas 70000

Šī awk komanda nolasīs datus no darbinieks.txt failu pa rindām un izdrukājiet pirmo pēc formatēšanas. Šeit, %10 s n nozīmē, ka izvade būs 10 rakstzīmes gara. Ja izvades vērtība ir mazāka par 10 rakstzīmēm, atstarpes tiks pievienotas vērtības priekšpusē.



$ awk'{printf'%10s n', 1 ASV dolārs'darbinieks.txt

Izeja:





Dodieties uz saturu



awk sadalīties baltajā telpā

Noklusējuma vārdu vai lauku atdalītājs jebkura teksta sadalīšanai ir atstarpe. komanda awk var izmantot teksta vērtību kā ievadi dažādos veidos. Ievades teksts tiek nodots no izmest ārā komandu nākamajā piemērā. Teksts, ' Man patīk programmēt Tiks sadalīts pēc noklusējuma atdalītāja, telpa , un trešais vārds tiks izdrukāts kā izvade.

$izmest ārā 'Man patīk programmēt' | awk '{print $ 3}'

Izeja:

Dodieties uz saturu

awk, lai mainītu norobežotāju

komandu awk var izmantot, lai mainītu norobežotāju jebkuram faila saturam. Pieņemsim, ka jums ir teksta fails ar nosaukumu phone.txt ar šādu saturu, kur “:” tiek izmantots kā faila satura lauku atdalītājs.

phone.txt

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

Palaidiet šādu awk komandu, lai mainītu norobežotāju, ':' pēc '-' faila saturam, phone.txt .

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

Izeja:

Dodieties uz saturu

awk ar datiem, kas atdalīti ar cilnēm

komandā awk ir daudz iebūvētu mainīgo, kas tiek izmantoti teksta lasīšanai dažādos veidos. Divi no tiem ir FS un OFS . FS ir ievades lauku atdalītājs un OFS ir izvades lauku atdalītāju mainīgie. Šo mainīgo izmantošana ir parādīta šajā sadaļā. Izveidojiet a cilni atdalīts fails ar nosaukumu input.txt ar šādu saturu, lai pārbaudītu FS un OFS mainīgie.

Input.txt

Skriptu valoda klienta pusē
Skriptu valoda servera pusē
Datu bāzes serveris
Tīmekļa serveris

Izmantojot FS mainīgo ar cilni

Šī komanda sadalīs katru rindu input.txt failu, pamatojoties uz cilni (“ t”), un izdrukājiet katras rindas pirmo lauku.

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

Izeja:

Izmantojot mainīgo OFS ar cilni

Šī komanda awk izdrukās 9tūkst un 5tūkst lauki “Ls -l” komandu izvadi ar cilnes atdalītāju pēc kolonnas nosaukuma drukāšanas Vārds un Izmērs . Šeit, OFS mainīgais tiek izmantots, lai formatētu izvadi ar cilni.

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

Izeja:

Dodieties uz saturu

awk ar CSV datiem

Jebkura CSV faila saturu var parsēt vairākos veidos, izmantojot komandu awk. Izveidojiet CSV failu ar nosaukumu “ klients.csv Ar šādu saturu, lai lietotu komandu awk.

klients.txt

Id, vārds, e -pasts, tālrunis
1, Sofija, [aizsargāts pa e-pastu], (862) 478-7263
2, Amēlija, [aizsargāts pa e-pastu], (530) 764-8000
3, Emma, ​​[aizsargāts pa e-pastu], (542) 986-2390

Tiek lasīts viens CSV faila lauks

“-F” opciju izmanto ar komandu awk, lai iestatītu norobežotāju katras faila rindas sadalīšanai. Šī komanda awk izdrukās vārds lauks klients.csv failu.

$kaķisklients.csv
$awk -F ',' '{print $ 2}'klients.csv

Izeja:

Vairāku lauku lasīšana, apvienojot tos ar citu tekstu

Šī komanda izdrukās trīs laukus klients.csv apvienojot virsraksta tekstu, Vārds, e -pasts un tālrunis . Pirmā rinda klients.csv failā ir katra lauka nosaukums. mainīgais satur faila rindas numuru, kad awk komanda parsē failu. Šajā piemērā NR mainīgais tiek izmantots, lai izlaistu faila pirmo rindu. Rezultātā tiks parādīts 2nd, 3rdun 4tūkstvisu rindu lauki, izņemot pirmo rindu.

$awk -F ',' 'NR> 1 {print' Name: '$ 2', Email: '$ 3', Phone: '$ 4}'klients.csv

Izeja:

CSV faila lasīšana, izmantojot awk skriptu

awk skriptu var izpildīt, palaižot awk failu. Šajā piemērā ir parādīts, kā izveidot awk failu un palaist failu. Izveidojiet failu ar nosaukumu awkcsv.awk ar šādu kodu. SĀKT atslēgvārds tiek izmantots skriptā, lai informētu komandu awk izpildīt skriptu SĀKT pirms citu uzdevumu veikšanas. Šeit lauku atdalītājs ( FS ) tiek izmantots, lai definētu sadalītāju un 2ndun 1stlauki tiks drukāti atbilstoši formātam, kas tiek izmantots funkcijā printf ().

awkcsv.awk
SĀKT{FS= ','} { printf '% 5s (% s) n',$2,$1}

Skrien awkcsv.awk fails ar saturu klients.csv failu, izmantojot šādu komandu.

$awk -fawkcsv.awk customer.csv

Izeja:

Dodieties uz saturu

awk regex

Regulārā izteiksme ir modelis, ko izmanto, lai meklētu jebkuru teksta virkni. Dažādu veidu sarežģītus meklēšanas un aizstāšanas uzdevumus var veikt ļoti viegli, izmantojot regulāro izteiksmi. Šajā sadaļā ir parādīti daži vienkārši regulārās izteiksmes lietojumi ar komandu awk.

Atbilstošs raksturskomplekts

Šī komanda atbilst vārdam Muļķis vai muļķis vai Forši ar ievades virkni un izdrukājiet, ja vārds tiek atrasts. Šeit, Lelle nesakritīs un nedrukās.

$printf 'Muļķis nForši nLelle nbool ' | awk '/[FbC] ool/'

Izeja:

Meklē virkni rindas sākumā

“^” simbols tiek izmantots regulārajā izteiksmē, lai meklētu jebkuru modeli rindas sākumā. ' Linux ” vārds tiks meklēts katras teksta rindas sākumā nākamajā piemērā. Šeit divas rindas sākas ar tekstu, 'Linux 'Un šīs divas rindas tiks parādītas izvadā.

$izmest ārā -Un 'Linux var izmantot bez maksas nTā ir atvērtā pirmkoda programmatūra nLinuxHint ir
populāra emuāru vietne '
| awk '/^Linux/'

Izeja:

Meklē virkni rindas beigās

“$” simbols tiek izmantots regulārajā izteiksmē, lai meklētu jebkuru modeli katras teksta rindas beigās. ' Skripts 'Vārds tiek meklēts nākamajā piemērā. Šeit divās rindās ir vārds, Skripts rindas beigās.

$izmest ārā -Un 'PHP skripts nJavaScript nVizuālā programmēšana ” | awk '/Skripts $/'

Izeja:

Meklēšana, izlaižot noteiktu rakstzīmju kopu

“^” simbols norāda teksta sākumu, kad tas tiek izmantots jebkura virknes raksta priekšā (“ / ^… /”) vai pirms jebkuras rakstzīmju kopas, ko deklarējis ^ […] . Ja “^” simbols tiek izmantots trešajā iekavās, [^…], tad meklēšanas laikā iekavās norādītā rakstzīmju kopa tiks izlaista. Šī komanda meklēs jebkuru vārdu, kas nesākas ar “F” bet beidzas ar ' ool '. Forši un bool tiks izdrukāts pēc parauga un teksta datiem.

$ printf 'Muļķis nForši nLelle nbool ' |awk' / [^ F] ool /'

Izeja:

Dodieties uz saturu

awk reģistru nejutīga regulārā izteiksme

Pēc noklusējuma regulārā izteiksme meklē burtu reģistru, meklējot jebkuru virknes modeli. Reģistrjutīgo meklēšanu var veikt, izmantojot komandu awk ar regulāro izteiksmi. Nākamajā piemērā pazemināt() funkcija tiek izmantota, lai veiktu meklēšanu, reģistrjutīgu. Šeit ievades teksta katras rindas pirmais vārds tiks pārveidots par mazajiem burtiem, izmantojot pazemināt() funkciju un atbilst regulārās izteiksmes modelim. augšup () funkciju var izmantot arī šim nolūkam, šajā gadījumā modelis ir jādefinē ar lielo burtu. Šajā piemērā definētais teksts satur meklēšanas vārdu, 'Tīmeklis ”Divās rindās, kuras tiks izdrukātas kā izvads.

$izmest ārā -Un 'Web dizains nweb izstrāde nSistēma ” | awk 'tolower ($ 0) ~ /^web /;'

Izeja:

Dodieties uz saturu

awk ar NF (lauku skaits) mainīgo

NF ir iebūvēts komandas awk mainīgais, ko izmanto, lai saskaitītu kopējo lauku skaitu katrā ievades teksta rindā. Izveidojiet jebkuru teksta failu ar vairākām rindām un vairākiem vārdiem. fails input.txt Šeit tiek izmantots fails, kas izveidots iepriekšējā piemērā.

Izmantojot NF no komandrindas

Šeit pirmā komanda tiek izmantota, lai parādītu input.txt failu un otro komandu izmanto, lai parādītu kopējo lauku skaitu katrā faila rindā, izmantojot NF mainīgais.

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

Izeja:

Izmantojot NF awk failā

Izveidojiet awk failu ar nosaukumu saskaitīt.nožēlo ar zemāk doto skriptu. Kad šis skripts tiks izpildīts ar jebkādiem teksta datiem, katrs rindas saturs ar kopējiem laukiem tiks izdrukāts kā izvade.

saskaitīt.nožēlo

{drukāt $0}
{drukāt'[Kopējais lauku skaits:'NF']'}

Palaidiet skriptu, izmantojot šādu komandu.

$awk -fcount.awk input.txt

Izeja:

Dodieties uz saturu

awk gensub () funkcija

getub () ir aizstāšanas funkcija, ko izmanto virkņu meklēšanai, pamatojoties uz noteiktu norobežotāju vai regulāras izteiksmes modeli. Šī funkcija ir definēta sadaļā 'Gawk' pakotne, kas nav instalēta pēc noklusējuma. Šīs funkcijas sintakse ir sniegta zemāk. Pirmais parametrs satur regulārās izteiksmes modeli vai meklēšanas norobežotāju, otrais parametrs satur aizvietojošo tekstu, trešais parametrs norāda, kā tiks veikta meklēšana, un pēdējais parametrs satur tekstu, kurā šī funkcija tiks lietota.

Sintakse:

gensub(regexp, nomaiņa, kā[, mērķis])

Lai instalētu, izpildiet šādu komandu gawk iepakojums lietošanai getub () funkcija ar komandu awk.

$ sudo apt-get install gawk

Izveidojiet teksta failu ar nosaukumu “ salesinfo.txt ”Ar šādu saturu, lai praktizētu šo piemēru. Šeit laukus atdala cilne.

salesinfo.txt

Mani 700 000
Jūsu 800 000
Trešdiena 750000
Savāc 200 000
Piektdiena 430000
Sestdiena 820000

Izpildiet šo komandu, lai izlasītu salesinfo.txt failu un izdrukājiet visu pārdošanas summu. Šeit trešais parametrs “G” norāda globālo meklēšanu. Tas nozīmē, ka modelis tiks meklēts visā faila saturā.

$awk '{x = gensub (' t ',' ',' G ', 2 ASV dolāri); printf x '+'} END {print 0} 'salesinfo.txt| bc -viņi

Izeja:

Dodieties uz saturu

awk ar rand () funkciju

rinda () funkcija tiek izmantota, lai ģenerētu jebkuru nejaušu skaitli, kas lielāks par 0 un mazāks par 1. Tātad, tas vienmēr ģenerēs daļskaitli, kas ir mazāks par 1. Šī komanda ģenerēs nejaušu daļskaitli un reizinās vērtību ar 10, lai iegūtu skaitli vairāk par 1. Lai lietotu funkciju printf (), tiks izdrukāts daļskaitlis ar diviem cipariem aiz komata. Ja izpildīsit šo komandu vairākas reizes, tad katru reizi saņemsiet atšķirīgu izvadi.

$awk 'BEGIN {printf' Skaitlis ir =%. 2f n ', rand ()*10}'

Izeja:

Dodieties uz saturu

awk lietotāja definēta funkcija

Visas iepriekšējos piemēros izmantotās funkcijas ir iebūvētas. Bet jūs varat deklarēt lietotāja definētu funkciju savā awk skriptā, lai veiktu jebkuru konkrētu uzdevumu. Pieņemsim, ka vēlaties izveidot pielāgotu funkciju, lai aprēķinātu taisnstūra laukumu. Lai veiktu šo uzdevumu, izveidojiet failu ar nosaukumu “ apgabals.noiet 'Ar šādu skriptu. Šajā piemērā lietotāja definēta funkcija nosaukta apgabals () tiek deklarēts skriptā, kas aprēķina platību, pamatojoties uz ievades parametriem, un atgriež laukuma vērtību. getline komanda tiek izmantota, lai saņemtu ievadi no lietotāja.

apgabals.noiet

# Aprēķiniet laukumu
funkcijuapgabalā(augstums,platums){
atgrieztiesaugstums*platums
}

# Sāk izpildi
SĀKT{
drukāt'Ievadiet augstuma vērtību:'
getline h< '-'
drukāt'Ievadiet platuma vērtību:'
getline w< '-'
drukāt'Platība ='apgabalā(h,iekšā)
}

Palaidiet skriptu.

$awk -fapgabals.noiet

Izeja:

Dodieties uz saturu

awk, ja piemērs

awk atbalsta nosacījumus, piemēram, citas standarta programmēšanas valodas. Šajā sadaļā ir parādīti trīs If paziņojumu veidi, izmantojot trīs piemērus. Izveidojiet teksta failu ar nosaukumu items.txt ar šādu saturu.

items.txt

Cietais disks Samsung 100 USD
Pele A4Tech
Printeris HP 200 USD

Vienkāršs piemērs :

sekojošā komanda izlasīs items.txt failu un pārbaudiet 3rd lauka vērtība katrā rindā. Ja vērtība ir tukša, tā izdrukās kļūdas ziņojumu ar rindas numuru.

$awk '{if ($ 3 ==' ') print' Rindā 'NR} trūkst lauka Cena'items.txt

Izeja:

ja-cits piemērs:

Šī komanda drukās preces cenu, ja 3rdrindā ir lauks, pretējā gadījumā tas izdrukās kļūdas ziņojumu.

$ awk'{if ($ 3 ==' ') print' Trūkst lauka cenas '
else print ”preces cena ir“ $ 3} ”
preces.txt

Izeja:

ja-cits-ja piemērs:

Kad no termināļa tiks izpildīta šāda komanda, tā no lietotāja ievadīs informāciju. Ievades vērtība tiks salīdzināta ar katru nosacījumu, ja nosacījums ir patiess. Ja kāds nosacījums piepildās, tas izdrukās atbilstošo atzīmi. Ja ievades vērtība neatbilst nevienam nosacījumam, drukāšana neizdosies.

$awk 'BEGIN {print' Ievadiet atzīmi: '
getline zīme<'-'
ja (atzīme> = 90) drukāt “A+”
citādi, ja (atzīme> = 80) drukāt “A”
citādi, ja (atzīme> = 70) drukāt “B+”
citādi drukāt 'Fail'} '

Izeja:

Dodieties uz saturu

awk mainīgie

Mainīgā awk deklarācija ir līdzīga apvalka mainīgā deklarācijai. Mainīgā lieluma lasīšanai ir atšķirība. Simbols “$” tiek izmantots ar apvalka mainīgā mainīgā nosaukumu, lai nolasītu vērtību. Bet, lai nolasītu vērtību, nav jāizmanto “$” ar mainīgo awk.

Izmantojot vienkāršu mainīgo:

Šī komanda deklarēs mainīgo ar nosaukumu 'Vietne' un šim mainīgajam tiek piešķirta virknes vērtība. Mainīgā vērtība tiek izdrukāta nākamajā paziņojumā.

$awk 'BEGIN {site =' LinuxHint.com '; drukāt vietni} '

Izeja:

Mainīgā izmantošana datu izgūšanai no faila

Šī komanda meklēs vārdu 'Printeris' failā items.txt . Ja kāda faila rinda sākas ar 'Printeris ', Tad tajā tiks saglabāta vērtība 1st , 2nd un 3rd laukus trīs mainīgos. vārds un cena mainīgie tiks drukāti.

$ awk'/ Printeris/ {nosaukums = 1 ASV dolārs; zīmols = 2 ASV dolāri; cena = 3 ASV dolāri; drukāt' vienuma nosaukums = 'nosaukums;
drukāt 'preces cena =' cena} '
preces.txt

Izeja:

Dodieties uz saturu

awk masīvi

Awk var izmantot gan ciparu, gan saistītos masīvus. Masīva mainīgo deklarācija awk ir tāda pati kā citām programmēšanas valodām. Šajā sadaļā ir parādīti daži masīvu izmantošanas veidi.

Asociācijas masīvs:

Masīva indekss būs jebkura virkne asociatīvajam masīvam. Šajā piemērā tiek deklarēts un izdrukāts trīs elementu asociatīvs masīvs.

$awk 'BEGIN {
grāmatas ['Web dizains'] = 'Mācāmies HTML 5';
books ['Web Programming'] = 'PHP un MySQL'
grāmatas ['PHP Framework'] = 'Mācāmies Laravel 5'
printf '%s n%s n%s n', grāmatas ['Web dizains'], grāmatas ['Web programming'],
grāmatas ['PHP Framework']} ”

Izeja:

Ciparu masīvs:

Trīs elementu skaitliskais masīvs tiek deklarēts un izdrukāts, atdalot cilni.

$ awk'BEGIN {
skaitlis [0] = 80;
skaitlis [1] = 55;
skaitlis [2] = 76;

# drukas masīva elementi
printf 'Masīva vērtības: %d t%d t%d n', skaitlis [0], skaitlis [1], skaitlis [2]; } '

Izeja:

Dodieties uz saturu

awk cilpa

Trīs cilpu veidus atbalsta awk. Šo cilpu pielietojums ir parādīts šeit, izmantojot trīs piemērus.

Kamēr cilpa:

kamēr cilpa, kas tiek izmantota nākamajā komandā, atkārtosies 5 reizes un izies no cilpas, lai pārtrauktu paziņojumu.

$ awk 'SĀKT {n = 1; kamēr (n 5) pārtraukums; drukāt n; n ++}} '

Izeja:

Cilpai:

Cilpai, kas tiek izmantota nākamajā awk komandā, tiks aprēķināta summa no 1 līdz 10 un izdrukāta vērtība.

$awk 'SĀKT {summa = 0; par (n = 1; n<= 10; n++) sum=sum+n; print sum }'

Izeja:

Darīšanas laikā cilpa:

šādas komandas do-while cilpa izdrukās visus pāra skaitļus no 10 līdz 5.

$awk 'SĀKT {skaitītājs = 10; do {ja (skaitītājs%2 == 0) drukāt skaitītāju; skaitītājs-}
kamēr (skaitītājs> 5)} '

Izeja:

Dodieties uz saturu

awk, lai izdrukātu pirmo kolonnu

Jebkura faila pirmo kolonnu var izdrukāt, izmantojot awk mainīgo $ 1. Bet, ja pirmās slejas vērtība satur vairākus vārdus, tiek izdrukāts tikai pirmās slejas pirmais vārds. Izmantojot īpašu norobežotāju, pirmo kolonnu var pareizi izdrukāt. Izveidojiet teksta failu ar nosaukumu student.txt ar šādu saturu. Šeit pirmajā slejā ir divu vārdu teksts.

Students.txt

Kanizs Fatema 30tūkstpartija
Abirs Hosains 35tūkstpartija
Jānis Ābrahāms 40tūkstpartija

Palaidiet komandu awk bez atdalītāja. Tiks izdrukāta pirmās slejas pirmā daļa.

$awk '{print $ 1}'student.txt

Palaidiet komandu awk ar šādu norobežotāju. Tiks izdrukāta visa pirmās slejas daļa.

$awk -F '\ s \ s' '{print $ 1}'student.txt

Izeja:

Dodieties uz saturu

awk, lai izdrukātu pēdējo kolonnu

$ (NF) mainīgo var izmantot, lai izdrukātu jebkura faila pēdējo kolonnu. Tālāk norādītās awk komandas drukās pēdējās slejas pēdējo un pilno daļu studenti.txt failu.

$awk '{print $ (NF)}'student.txt
$awk -F '\ s \ s' '{print $ (NF)}'student.txt

Izeja:

Dodieties uz saturu

awk ar grep

grep ir vēl viena noderīga Linux komanda, lai meklētu saturu failā, pamatojoties uz jebkuru regulāru izteiksmi. Nākamajā piemērā ir parādīts, kā komandas awk un grep var izmantot kopā. satvēriens komandu izmanto, lai meklētu informāciju par darbinieka ID, ' 1002 'No darbinieks.txt failu. Komandas grep izvade tiks nosūtīta uz awk kā ievades dati. 5% prēmija tiks skaitīta un izdrukāta, pamatojoties uz darbinieka ID algu, ' 1002 ' pēc awk pavēles.

$kaķisdarbinieks.txt
$satvēriens '1002'darbinieks.txt| awk -F ' t' '{print $ 2' saņems $ '($ 3*5)/100' bonusu '}'

Izeja:

Dodieties uz saturu

awk ar BASH failu

Tāpat kā citas Linux komandas, komandu awk var izmantot arī BASH skriptā. Izveidojiet teksta failu ar nosaukumu customers.txt ar šādu saturu. Katra šī faila rinda satur informāciju par četriem laukiem. Tie ir klienta ID, vārds, adrese un mobilā tālruņa numurs, kas ir atdalīti ‘/ '.

customers.txt

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

Izveidojiet bash failu ar nosaukumu item_search.bash ar šādu skriptu. Saskaņā ar šo skriptu valsts vērtība tiks ņemta no lietotāja un meklēta the customers.txt failu pēc satvēriens komandu un nodeva komandai awk kā ievadi. Awk komanda tiks nolasīta 2nd un 4tūkst katras rindas laukus. Ja ievadītā vērtība atbilst jebkurai stāvokļa vērtībai customers.txt failu, tad tas izdrukās klienta vārds un Mobilā telefona numurs , pretējā gadījumā tas izdrukās ziņojumu Nav atrasts neviens klients .

item_search.bash

#!/bin/bash
izmest ārā 'Ievadiet štata nosaukumu:'
lasītValsts
klientiem=``satvēriens '$ štats'customers.txt| awk -F '/' '{print' Klienta vārds: '$ 2,',
Mobilā tālruņa numurs: $ 4}
``
ja [ '$ klientiem' !='' ];tad
izmest ārā $ klientiem
citādi
izmest ārā 'Nav atrasts klients'
būt

Izpildiet šādas komandas, lai parādītu rezultātus.

$kaķiscustomers.txt
$bashitem_search.bash

Izeja:

Dodieties uz saturu

awk ar sed

Vēl viens noderīgs Linux meklēšanas rīks ir sed . Šo komandu var izmantot, lai meklētu un aizstātu jebkura faila tekstu. Šis piemērs parāda komandas awk izmantošanu ar sed komandu. Šeit komanda sed meklēs visu darbinieku vārdus, sākot ar “ 'Un tiek ievadīta awk komandai kā ievade. awk izdrukās darbinieku vārds un ID pēc formatēšanas.

$kaķisdarbinieks.txt
$sed -n '/J/p'darbinieks.txt| awk -F ' t' '{printf'%s (%s) n ', $ 2, $ 1}'

Izeja:

Dodieties uz saturu

Secinājums:

Varat izmantot komandu awk, lai pēc datu pareizas filtrēšanas izveidotu dažāda veida pārskatus, pamatojoties uz jebkādiem tabulas vai norobežotiem datiem. Ceru, ka jūs varēsit uzzināt, kā darbojas awk komanda, kad esat praktizējis šajā apmācībā parādītos piemērus.