Awk

20 awk piemēri

20 awk piemēri

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:

  1. awk ar printf
  2. awk sadalīt uz baltās vietas
  3. awk nomainīt atdalītāju
  4. awk ar datiem, kas atdalīti ar tabulām
  5. awk ar csv datiem
  6. awk regex
  7. awk case nejutīgs regex
  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 () 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 40000
1002 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.txt

Izeja:

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 valoda
Servera 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.txt

Izeja:

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ālrunis
1, 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.csv

Izeja:

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.awk
SĀ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.csv

Izeja:

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 kopa

Sekojošā 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 ir
populā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 $ 0
print "[Kopējais lauku skaits:" NF "]"

Palaidiet skriptu ar šādu komandu.

$ awk -f skaits.awk ievade.txt

Izeja:

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 gawk

Izveidojiet 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 700000
Otrdien 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 -l

Izeja:

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 laukumu
funkciju 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.awk

Izeja:

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āri
Pele 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.txt

Izeja:

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 'BEGIN
grā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 'BEGIN
skaitlis [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 partija
Abirs 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.txt

Palaidiet komandu awk ar šādu atdalītāju. Tiks izdrukāta pirmās kolonnas pilna daļa.

$ awk -F '\\ s \\ s' 'print $ 1' studenti.txt

Izeja:

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-7942
CA5455 / 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 / bash
echo "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 '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.

AppyMouse ekrāna skārienpaliktnis un peles rādītājs Windows planšetdatoriem
Planšetdatoru lietotājiem bieži pietrūkst peles rādītāja, it īpaši, ja viņi parasti lieto klēpjdatorus. Skārienekrāna viedtālruņiem un planšetdatoriem...
Vidējā peles poga nedarbojas sistēmā Windows 10
The peles vidējā poga palīdz jums ritināt garas tīmekļa lapas un ekrānus ar lielu datu daudzumu. Ja tas apstājas, jūs galu galā izmantosiet tastatūru,...
Kā nomainīt peles kreiso un labo pogu operētājsistēmā Windows 10
Tas ir diezgan normāli, ka visas datora peles ierīces ir ergonomiski izstrādātas lietotājiem ar labo roku. Bet ir pieejamas peles ierīces, kas ir īpaš...