20 awk piemēri
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ēšanu, aizstāt un sagatavot uzdevumus, izmantojot komandas awk, grep un sed. awk nav tikai komanda. Tā ir skriptu valoda, kuru var izmantot gan no termināla, gan no awk faila. Tas atbalsta mainīgo, nosacīto paziņojumu, masīvu, cilpas utt. tāpat kā citas skriptu valodas. Tas var lasīt jebkura faila saturu pa rindai un atdalīt laukus vai kolonnas, pamatojoties uz noteiktu atdalītāju. Tas atbalsta arī regulāru izteiksmi, meklējot noteiktu virkni teksta saturā vai failā, un veic darbības, ja tiek konstatēta atbilstība. Kā izmantot awk komandu un skriptu, ir parādīts šajā apmācībā, izmantojot 20 noderīgus piemērus.
Saturs:
- awk ar printf
- awk sadalīt uz baltās vietas
- awk nomainīt atdalītāju
- awk ar datiem, kas atdalīti ar tabulām
- awk ar csv datiem
- awk regex
- awk case nejutīgs regex
- awk ar nf (lauku skaits) mainīgo
- awk gensub () funkcija
- awk ar rand () funkciju
- awk lietotāja definēta funkcija
- awk ja
- awk mainīgie
- awk masīvi
- awk cilpa
- awk, lai izdrukātu pirmo kolonnu
- awk, lai izdrukātu pēdējo kolonnu
- awk ar grep
- awk ar bash skripta failu
- awk ar sed
Izmantojot awk ar printf
printf () funkciju izmanto, lai formatētu jebkuru izvadi lielākajā daļā programmēšanas valodu. Šo funkciju var izmantot ar awk komandu, lai ģenerētu dažāda veida formatētas izejas. awk komanda, ko galvenokārt izmanto jebkuram teksta failam. Izveidojiet teksta failu ar nosaukumu darbinieks.txt ar zemāk norādīto saturu, kur lauki ir atdalīti ar cilni ('\ t').
darbinieks.txt
1001 Jānis sena 400001002 Jafar Iqbal 60000
1003 Mehers Nigars 30000
1004 Džonijs Akns 70000
Šī komanda awk nolasīs datus no darbinieks.txt failu pa rindai un izdrukājiet pirmo iesniegto pēc formatēšanas. Šeit, "% 10s \ n”Nozīmē, ka izvade būs 10 rakstzīmes gara. Ja izvades vērtība ir mazāka par 10 rakstzīmēm, vērtības priekšā tiks pievienotas atstarpes.
$ awk 'printf "% 10s \ n", $ 1' darbinieks.txtIzeja:
Atveriet sadaļu Saturs
awk sadalīt uz baltās vietas
Noklusētais vārdu vai lauku atdalītājs jebkura teksta sadalīšanai ir atstarpe. komanda awk dažādos veidos var izmantot teksta vērtību kā ievadi. Ievades teksts tiek nodots no atbalss komandu šajā 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ā produkcija.
$ echo 'Man patīk programmēt' | awk 'print $ 3'Izeja:
Atveriet sadaļu Saturs
awk nomainīt atdalītāju
komandu awk var izmantot, lai mainītu jebkura faila satura atdalītāju. Pieņemsim, ka jums ir teksta fails ar nosaukumu tālruni.txt ar šādu saturu, kur ':' tiek izmantots kā faila satura lauka atdalītājs.
tālruni.txt
+123: 334: 889: 778+880: 1855: 456: 907
+9: 7777: 38644: 808
Palaidiet šo komandu awk, lai mainītu atdalītāju, ":" pēc "-" uz faila saturu, tālruni.txt.
$ kaķu tālrunis.txt$ awk '$ 1 = $ 1' FS = ":" OFS = "-" tālrunis.txt
Izeja:
Atveriet sadaļu Saturs
awk ar datiem, kas atdalīti ar tabulām
komandā awk ir daudz iebūvētu mainīgo, kas tiek izmantoti, lai tekstu lasītu dažādos veidos. Divas no tām ir FS un OFS. FS ir ievades lauka atdalītājs un OFS ir izvades lauka atdalītāja mainīgie. Šo mainīgo lielumu izmantošana ir parādīta šajā sadaļā. Izveidojiet a cilni atdalīts fails nosaukts ievade.txt ar šādu saturu, lai pārbaudītu FS un OFS mainīgie.
Ievade.txt
Klienta puses skriptu valodaServera puses skriptu valoda
Datu bāzes serveris
Web serveris
Izmantojot FS mainīgo ar cilni
Šī komanda sadalīs katru rindu ievade.txt failu, pamatojoties uz cilni ('\ t'), un izdrukājiet katras rindas pirmo lauku.
$ awk 'print $ 1' FS = '\ t' ievade.txtIzeja:
Izmantojot OFS mainīgo ar cilni
Ar šādu awk komandu tiks izdrukāts 9th un 5th lauki 'ls -l' komandas izvade ar cilnes atdalītāju pēc kolonnas nosaukuma izdrukāšanas “Nosaukums" un "Izmērs”. Šeit, OFS mainīgais tiek izmantots, lai formatētu izvadi ar cilni.
$ ls -l$ ls -l | awk -v OFS = '\ t' 'BEGIN printf "% s \ t% s \ n", "Nosaukums", "Izmērs" print $ 9, $ 5'
Izeja:
Atveriet sadaļu Saturs
awk ar CSV datiem
Jebkura CSV faila saturu var parsēt vairākos veidos, izmantojot komandu awk. Izveidojiet CSV failu ar nosaukumuklientu.csv'Ar šādu saturu, lai lietotu komandu awk.
klientu.txt
ID, vārds, e-pasts, tālrunis1, Sofija, [aizsargāta ar e-pastu], (862) 478-7263
2, Amēlija, [aizsargāta ar e-pastu], (530) 764-8000
3, Emma, [aizsargāta ar e-pastu], (542) 986-2390
CSV faila viena lauka lasīšana
"-F" opcija tiek izmantota ar komandu awk, lai iestatītu atdalītāju katras faila rindas sadalīšanai. Ar šādu awk komandu tiks izdrukāts nosaukums joma klients.csv failu.
$ kaķu klients.csv$ awk -F "," "print $ 2 'klients.csv
Izeja:
Vairāku lauku lasīšana, apvienojot tos ar citu tekstu
Šī komanda izdrukās trīs laukus klientu.csv apvienojot virsraksta tekstu, Vārds, e-pasts un tālrunis. Pirmā rinda klientu.csv failā ir katra lauka nosaukums. NR 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, 3rd un 4th visu līniju lauki, izņemot pirmo.
$ awk -F "," 'NR> 1 print "Nosaukums:" $ 2 ", E-pasts:" $ 3 ", Tālrunis:" $ 4' klients.csvIzeja:
CSV faila lasīšana, izmantojot awk skriptu
awk skriptu var izpildīt, palaižot awk failu. Kā jūs varat izveidot awk failu un palaist failu, ir parādīts šajā piemērā. Izveidojiet failu ar nosaukumu awkcsv.awk ar šādu kodu. SĀKT atslēgvārds tiek izmantots skriptā, lai informētu komandu awk, lai izpildītu SĀKT vispirms veiciet citus uzdevumus. Šeit lauka atdalītājs (FS) izmanto, lai definētu dalīšanas atdalītāju un 2nd un 1sv lauki tiks izdrukāti atbilstoši formātam, ko izmanto funkcija printf ().
awkcsv.awkSĀKT FS = "," printf "% 5s (% s) \ n", $ 2, $ 1
Palaist awkcsv.awk fails ar saturu klients.csv failu ar šādu komandu.
$ awk -f awkcsv.awk klients.csvIzeja:
Atveriet sadaļu Saturs
awk regex
Regulārā izteiksme ir modelis, ko izmanto, lai meklētu jebkuru virkni tekstā. Dažādu veidu sarežģītus meklēšanas un aizstāšanas uzdevumus var izdarīt ļoti vienkārši, izmantojot regulāro izteiksmi. Šajā sadaļā ir parādīti daži parastās izteiksmes ar awk komandu izmantošanas veidi.
Atbilstoša rakstzīmju kopaSekojošā komanda sakritīs ar vārdu Muļķis vai muļķis vai Forši ar ievades virkni un izdrukājiet, ja vārds tiek atrasts. Šeit, Lelle nesakritīs un netiks izdrukāts.
$ printf "Fool \ nCool \ nDoll \ nbool" | awk '/ [FbC] ool /'Izeja:
Virknes meklēšana 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ā šajā piemērā. Šeit ar tekstu sākas divas rindas, 'Linux"un šīs divas rindas tiks parādītas izvadē.
$ echo -e "Linux ir brīvi lietojams \ n Tā ir atvērtā koda programmatūra \ nLinuxHint irpopulāra emuāru vietne "| awk '/ ^ Linux /'
Izeja:
Meklē virkni rindas beigās
'$' simbols tiek izmantots regulārajā izteiksmē, lai meklētu jebkuru rakstu katras teksta rindas beigās. "Skripts'vārds tiek meklēts šajā piemērā. Divās rindās ir vārds, Skripts rindas beigās.
$ echo -e "PHP skripts \ nJavaScript \ nVizuālā programmēšana" | awk '/ skripts $ /'Izeja:
Meklēšana, izlaižot noteiktu rakstzīmju kopu
'^' simbols norāda teksta sākumu, ja tas tiek izmantots jebkura virknes raksta priekšā ('/ ^… /') vai pirms jebkura rakstzīmju kopas, kuru deklarējis ^ […]. Ja '^' simbols tiek izmantots trešās iekavas iekšienē, [^…] tad definētā rakstzīmju kopa iekavas iekšpusē meklēšanas laikā tiks izlaista. Šī komanda meklēs jebkuru vārdu, kas nesākas ar "F" bet beidzot ar 'ool". Forši un bool tiks izdrukāts atbilstoši parauga un teksta datiem.
$ printf "Fool \ nCool \ nDoll \ nbool" | awk '/ [^ F] ool /'Izeja:
Atveriet sadaļu Saturs
awk case nejutīgs regex
Pēc noklusējuma regulārā izteiksme veic reģistrjutīgu meklēšanu, meklējot jebkuru virknes modeli. Reģistrjutīgu meklēšanu var veikt ar komandu awk ar regulāro izteiksmi. Šajā piemērā, pazemināt() funkcija tiek izmantota, lai meklētu reģistru nejutīgi. Šeit katras ievades teksta rindas pirmais vārds tiks pārveidots par mazo burtu, izmantojot pazemināt() funkcija un saskaņot ar regulārās izteiksmes modeli. augšdaļa () Funkciju var izmantot arī šim nolūkam, šajā gadījumā modelis jānosaka ar visu lielo burtu. Nākamajā piemērā definētais teksts satur meklējamo vārdu, 'tīmeklis'divās rindās, kas tiks izdrukātas kā izvads.
$ echo -e "Tīmekļa dizains \ nweb izstrāde \ nKarkass" | awk 'tolower ($ 0) ~ / ^ web /;'Izeja:
Atveriet sadaļu Saturs
awk ar NF (lauku skaits) mainīgo
NF ir iebūvēts komandas awk mainīgais, ko izmanto, lai uzskaitītu kopējo lauku skaitu katrā ievades teksta rindā. Izveidojiet jebkuru teksta failu ar vairākām rindām un vairākiem vārdiem. ievadi.txt šeit tiek izmantots fails, kas izveidots iepriekšējā piemērā.
Izmantojot komandrindā NF
Šeit tiek izmantota pirmā komanda, lai parādītu ievade.txt failu un otro komandu izmanto, lai parādītu kopējo lauku skaitu katrā faila rindā, izmantojot NF mainīgais.
$ kaķa ievade.txt$ awk 'print NF' ievade.txt
Izeja:
NF izmantošana awk failā
Izveidojiet awk failu ar nosaukumu skaitīt.awk 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.
skaitīt.awk
print $ 0print "[Kopējais lauku skaits:" NF "]"
Palaidiet skriptu ar šādu komandu.
$ awk -f skaits.awk ievade.txtIzeja:
Atveriet sadaļu Saturs
awk gensub () funkcija
izpaužas () ir aizstāšanas funkcija, ko izmanto virknes meklēšanai, pamatojoties uz noteiktu norobežotāju vai regulārās izteiksmes modeli. Šī funkcija ir definēta "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 atdalītāju, otrais parametrs satur aizstājoš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, aizstājējs, kā [, target])Lai instalētu, izpildiet šo komandu gawk pakete lietošanai izpaužas () funkcija ar komandu awk.
$ sudo apt-get install gawkIzveidojiet teksta failu ar nosaukumupārdošanas informācija.txt'ar šādu saturu, lai praktizētu šo piemēru. Šeit laukus atdala cilne.
pārdošanas informācija.txt
Pirmdien 700000Otrdien 800000
Tr 750000
Ce 200000
Piektdien 430000
Sestdien 820000
Palaidiet šo komandu, lai nolasītu pārdošanas informācija.txt failu un izdrukājiet kopējo pārdošanas summu. Šeit trešais parametrs “G” norāda globālo meklēšanu. Tas nozīmē, ka modelis tiks meklēts faila pilnā saturā.
$ awk 'x = gensub ("\ t", "", "G", 2 ASV dolāri); printf x "+" END print 0 'pārdošanas informācija.txt | bc -lIzeja:
Atveriet sadaļu Saturs
awk ar rand () funkciju
rand () Funkcija tiek izmantota jebkura nejauša skaitļa ģenerēšanai, kas ir lielāks par 0 un mazāks par 1. Tātad tas vienmēr ģenerēs daļēju skaitli, kas ir mazāks par 1. Šī komanda ģenerēs daļēju nejaušu skaitli un reizinās vērtību ar 10, lai iegūtu skaitli, kas lielāks par 1. Funkcijas printf () pielietošanai tiks izdrukāts daļskaitlis ar diviem cipariem aiz komata. Ja vairākas reizes palaižat šo komandu, katru reizi iegūsiet atšķirīgu rezultātu.
$ awk 'BEGIN printf "Skaitlis ir =%.2f \ n ", rand () * 10 'Izeja:
Atveriet sadaļu Saturs
awk lietotāja definēta funkcija
Visas iepriekšējos piemēros izmantotās funkcijas ir iebūvētas funkcijas. Bet jūs varat deklarēt lietotāja definētu funkciju savā awk skriptā jebkura konkrēta uzdevuma veikšanai. Pieņemsim, ka vēlaties izveidot pielāgotu funkciju, lai aprēķinātu taisnstūra laukumu. Lai veiktu šo uzdevumu, izveidojiet failu ar nosaukumu 'apgabalā.awk'ar šādu skriptu. Šajā piemērā lietotāja definēta funkcija ar nosaukumu apgabals () tiek deklarēts skriptā, kas aprēķina apgabalu, pamatojoties uz ievades parametriem, un atgriež apgabala vērtību. getline komandu šeit izmanto, lai ņemtu ievadi no lietotāja.
apgabalā.awk
# Aprēķiniet laukumufunkciju apgabals (augstums, platums)
atgriešanās augstums * platums
# Sāk izpildi
SĀKT
print "Ievadiet augstuma vērtību:"
getline h < "-"
print "Ievadiet platuma vērtību:"
getline w < "-"
izdrukāt laukumu "Platība =" (h, w)
Palaidiet skriptu.
$ awk -f apgabals.awkIzeja:
Atveriet sadaļu Saturs
awk ja piemērs
awk atbalsta nosacījumus, tāpat kā citas standarta programmēšanas valodas. Šajā sadaļā ir parādīti trīs veidu paziņojumi, ja tiek izmantoti trīs piemēri. Izveidojiet teksta failu ar nosaukumu preces.txt ar šādu saturu.
preces.txt
HDD Samsung 100 ASV dolāriPele A4Tech
Printeris 200 USD
Vienkāršs, ja piemērs:
pēc komandas viņš nolasīs preces.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 "Rindas" NR "vienumos nav cenas lauka.txtIzeja:
ja-cits piemērs:
Šī komanda izdrukās preces cenu, ja 3rd lauks rindā pastāv, pretējā gadījumā tas izdrukās kļūdas ziņojumu.
$ awk 'if ($ 3 == "") print "Trūkst cenas lauka"citādi drukāt "preces cena ir" $ 3 'preces.txt
Izeja:
ja-cits-ja piemērs:
Kad šī komanda tiks izpildīta no termināļa, tā veiks ievadi no lietotāja. Ievades vērtība tiks salīdzināta ar katru nosacījumu, ja nosacījums ir patiess. Ja kāds nosacījums piepildīsies, tas izdrukās atbilstošo atzīmi. Ja ievades vērtība neatbilst nevienam nosacījumam, tā tiks drukāta.
$ awk 'BEGIN print "Ievadiet atzīmi:"getline atzīme < "-"
ja (atzīmēt> = 90) drukāt "A +"
cits, ja (atzīmēt> = 80) drukāt "A"
cits, ja (atzīmēt> = 70) drukāt "B +"
citādi izdrukāt "Fail" '
Izeja:
Atveriet sadaļu Saturs
awk mainīgie
Awk mainīgā deklarācija ir līdzīga shell mainīgā deklarācijai. Mainīgā vērtības nolasīšanā ir atšķirība. Simbols '$' tiek izmantots čaulas mainīgā mainīgā nosaukumam, lai nolasītu vērtību. Bet vērtības lasīšanai nav nepieciešams izmantot '$' 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 "; drukas vietne 'Izeja:
Mainīgā izmantošana datu izgūšanai no faila
Šī komanda meklēs vārdu 'Printeris' failā preces.txt. Ja kāda faila rindiņa sākas ar 'Printeristad tā glabās vērtību 1sv, 2nd un 3rd laukus trīs mainīgajos. nosaukums un cena mainīgie tiks izdrukāti.
$ awk '/ Printer / name = $ 1; brand = $ 2; price = $ 3; print "item name =" name;izdrukāt vienumu cenu = “cena”.txt
Izeja:
Atveriet sadaļu Saturs
awk masīvi
Gan ciparu, gan saistītos masīvus var izmantot awk. Masīva mainīgā deklarācija awk ir tāda pati kā citām programmēšanas valodām. Daži masīvu izmantošanas veidi ir parādīti šajā sadaļā.
Asociatīvais masīvs:
Masīva indekss būs jebkura asociatīvā masīva virkne. Šajā piemērā tiek deklarēts un izdrukāts trīs elementu asociatīvs masīvs.
$ awk 'BEGINgrāmatas ["Web dizains"] = "HTML 5 mācīšanās";
grāmatas ["Web Programming"] = "PHP un MySQL"
grāmatas ["PHP Framework"] = "Learning Laravel 5"
printf "% s \ n% s \ n% s \ n", grāmatas ["Web dizains"], grāmatas ["Tīmekļa programmēšana"],
grāmatas ["PHP Framework"] '
Izeja:
Skaitliskais masīvs:
Trīs elementu skaitliskais masīvs tiek deklarēts un izdrukāts, atdalot cilni.
$ awk 'BEGINskaitlis [0] = 80;
skaitlis [1] = 55;
skaitlis [2] = 76;
# masīva elementu drukāšana
printf "Masīva vērtības:% d \ t% d \ t% d \ n", skaitlis [0], skaitlis [1], skaitlis [2];
Izeja:
Atveriet sadaļu Saturs
awk cilpa
Trīs veidu cilpas atbalsta awk. Šo cilpu lietojums 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 iziet no cilpas, lai pārtrauktu paziņojumu.
$ Awk 'SĀKUMS n = 1; kamēr (n <= 10) if(n > 5) pārtraukums; druka n; n ++ 'Izeja:
Cilpai:
Cilpai, kas tiek izmantota šajā komandā awk, aprēķinās summu no 1 līdz 10 un izdrukās vērtību.
$ awk 'BEGIN summa = 0; par (n = 1; n <= 10; n++) sum=sum+n; print sum 'Izeja:
Do-while cilpa:
šīs komandas cikls “do-while” izdrukās visus pāra skaitļus no 10 līdz 5.
$ awk 'BEGIN skaitītājs = 10; do if (skaitītājs% 2 == 0) drukāt skaitītāju; skaitītājs--kamēr (skaitītājs> 5) '
Izeja:
Atveriet sadaļu Saturs
awk, lai izdrukātu pirmo kolonnu
Jebkura faila pirmo kolonnu var izdrukāt, izmantojot awk mainīgo $ 1. Bet, ja pirmās kolonnas vērtībā ir vairāki vārdi, tiek izdrukāts tikai pirmās kolonnas pirmais vārds. Izmantojot konkrētu atdalītāju, pirmo kolonnu var izdrukāt pareizi. Izveidojiet teksta failu ar nosaukumu studentiem.txt ar šādu saturu. Šeit pirmajā slejā ir divu vārdu teksts.
Studenti.txt
Kaniz Fatema 30th partijaAbirs Hossains 35th partija
Jānis Ābrahāms 40th partija
Palaidiet komandu awk bez atdalītāja. Pirmās kolonnas pirmā daļa tiks izdrukāta.
$ awk 'print $ 1' studenti.txtPalaidiet komandu awk ar šādu atdalītāju. Tiks izdrukāta pirmās kolonnas pilna daļa.
$ awk -F '\\ s \\ s' 'print $ 1' studenti.txtIzeja:
Atveriet sadaļu Saturs
awk, lai izdrukātu pēdējo kolonnu
$ (NF) mainīgo var izmantot, lai izdrukātu jebkura faila pēdējo kolonnu. Ar šīm awk komandām tiks izdrukāta pēdējās kolonnas pēdējā un pilnā daļa studenti.txt failu.
$ awk 'print $ (NF)' studenti.txt$ awk -F '\\ s \\ s' 'print $ (NF)' studenti.txt
Izeja:
Atveriet sadaļu Saturs
awk ar grep
grep ir vēl viena noderīga Linux komanda, lai meklētu saturu failā, pamatojoties uz jebkuru regulāru izteiksmi. Kā abas komandas awk un grep var izmantot kopā, parādīts nākamajā piemērā. grep komandu izmanto, lai meklētu informāciju par darbinieka ID, '1002'no darbinieks.txt failu. Grep komandas izvade tiks nosūtīta uz awk kā ievades dati. 5% prēmija tiks skaitīta un izdrukāta, pamatojoties uz darbinieka algu, "1002 ' ar komandu awk.
$ kaķu darbinieks.txt$ grep '1002' darbinieks.txt | awk -F '\ t' 'print $ 2 "iegūs $" ($ 3 * 5) / 100 "bonuss"'
Izeja:
Atveriet sadaļu Saturs
awk ar BASH failu
Tāpat kā citu Linux komandu, komandu awk var izmantot arī BASH skriptā. Izveidojiet teksta failu ar nosaukumu klientiem.txt ar šādu saturu. Katrā šī faila rindā ir informācija par četriem laukiem. Tie ir klienta ID, vārds, adrese un mobilā tālruņa numurs, kurus atdala ar "/".
klientiem.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. gada Patterson Fork Road, Čikāga, Ilinoisa / 773-550-5107
Izveidojiet bash failu ar nosaukumu item_search.bash ar šādu skriptu. Saskaņā ar šo skriptu stāvokļa vērtība tiks ņemta no lietotāja un meklēta klientiem.txt iesniegt grep komandu un nodota komandai awk kā ievade. Awk komanda nolasīs 2nd un 4th katras līnijas lauki. Ja ievades vērtība sakrīt ar jebkuru stāvokļa vērtību klientiem.txt failu, tad tas izdrukās klienta nosaukums un Mobilā telefona numurs, pretējā gadījumā tas izdrukās ziņojumu “Nav atrasts neviens klients”.
item_search.bash
#!/ bin / bashecho "Ievadiet štata nosaukumu:"
lasīt stāvokli
klienti = 'grep "$ state" klienti.txt | awk -F "/" 'print "Klienta vārds:" $ 2 ",
Mobilais nr .: "$ 4"
ja ["$ klienti" != ""]; pēc tam
echo $ klientiem
cits
atbalss "Nav atrasts klients"
fi
Izpildiet šīs komandas, lai parādītu izejas.
$ kaķu klienti.txt$ bash item_search.bash
Izeja:
Atveriet sadaļu Saturs
awk ar sed
Vēl viens noderīgs Linux meklēšanas rīks ir sed. Šo komandu var izmantot gan jebkura faila teksta meklēšanai, gan aizstāšanai. Šis piemērs parāda awk komandas izmantošanu ar sed komandu. Šeit sed komanda meklēs visus darbinieku vārdus, kas sākas ar 'Džun pāriet uz komandu awk kā ievadi. awk izdrukās darbinieku nosaukums un ID pēc formatēšanas.
$ kaķu darbinieks.txt$ sed -n '/ J / p' darbinieks.txt | awk -F '\ t' 'printf "% s (% s) \ n", $ 2, $ 1'
Izeja:
Atveriet sadaļu Saturs
Secinājums:
Pēc datu pareizas filtrēšanas komandu awk var izmantot, lai izveidotu dažāda veida pārskatus, pamatojoties uz visiem tabulas vai atdalītajiem datiem. Ceru, ka varēsiet uzzināt, kā darbojas awk komanda, praktizējot šajā apmācībā parādītos piemērus.