Hvernig á að leyfa Awk að nota skelbreytur - Part 11
Þegar við skrifum skeljaforskriftir tökum við venjulega önnur smærri forrit eða skipanir eins og Awk-aðgerðir inn í forskriftirnar okkar. Þegar um Awk er að ræða verðum við að finna leiðir til að koma sumum gildum frá skelinni yfir í Awk aðgerðir.
Þetta er hægt að gera með því að nota skelbreytur innan Awk skipana, og í þessum hluta seríunnar munum við læra hvernig á að leyfa Awk að nota skelbreytur sem geta innihaldið gildi sem við viljum senda til Awk skipana.
Það eru mögulega tvær leiðir sem þú getur gert Awk kleift að nota skelbreytur:
1. Notkun Shell Quoting
Við skulum skoða dæmi til að sýna hvernig þú getur raunverulega notað skel tilvitnun til að skipta út gildi skelbreytu í Awk skipun. Í þessu dæmi viljum við leita að notandanafni í skránni /etc/passwd, sía og prenta reikningsupplýsingar notandans.
Þess vegna getum við skrifað test.sh forskrift með eftirfarandi innihaldi:
#!/bin/bash
#read user input
read -p "Please enter username:" username
#search for username in /etc/passwd file and print details on the screen
cat /etc/passwd | awk "/$username/ "' { print $0 }'
Síðan skaltu vista skrána og hætta.
Túlkun á Awk skipuninni í test.sh forskriftinni hér að ofan:
cat /etc/passwd | awk "/$username/ "' { print $0 }'
\/$username/ \ – skeljatilvitnun notuð til að skipta út gildi skeljarbreytu notandanafns í Awk skipuninni. Gildi notandanafns er mynstur sem leita á í skránni /etc/passwd.
Athugaðu að tvöfalda gæsalappinn er utan Awk forskriftarinnar, ‘{ print $0 }’.
Gerðu síðan handritið keyranlegt og keyrðu það sem hér segir:
$ chmod +x test.sh
$ ./text.sh
Eftir að hafa keyrt skriftuna verðurðu beðinn um að slá inn notandanafn, slá inn gilt notendanafn og ýta á Enter. Þú munt skoða reikningsupplýsingar notandans úr /etc/passwd skránni eins og hér að neðan:

2. Notkun Awk's Variable Assignment
Þessi aðferð er miklu einfaldari og betri í samanburði við aðferð eitt hér að ofan. Miðað við dæmið hér að ofan getum við keyrt einfalda skipun til að framkvæma verkið. Undir þessari aðferð notum við -v valkostinn til að úthluta skelbreytu til Awk breytu.
Í fyrsta lagi, búðu til skelbreytu, notendanafn og gefðu henni nafnið sem við viljum leita í /etc/passswd skránni:
username="aaronkilik"
Sláðu síðan inn skipunina hér að neðan og ýttu á Enter:
# cat /etc/passwd | awk -v name="$username" ' $0 ~ name {print $0}'

Skýring á ofangreindri skipun:
-v– Awk valkostur til að lýsa yfir breytunotandanafn– er skelbreytannafn– er Awk breytan
Við skulum skoða $0 ~ nafn vandlega í Awk handritinu, $0 ~ nafn {prenta $0}. Mundu að þegar við fórum yfir Awk samanburðaraðgerðir í hluta 4 í þessari röð, var einn af samanburðaraðgerðunum gildi ~ mynstur, sem þýðir: satt ef gildi passar við mynstur.
úttakið($0) cat skipunarinnar sem er flutt í Awk passar við mynstur (aaronkilik) sem er nafnið sem við erum að leita að í /etc/passwd, þar af leiðandi, samanburðaraðgerð er sönn. Línan sem inniheldur reikningsupplýsingar notandans er síðan prentuð á skjáinn.
Niðurstaða
Við höfum fjallað um mikilvægan hluta Awk eiginleika, sem geta hjálpað okkur að nota skelbreytur innan Awk skipana. Oft muntu skrifa lítil Awk forrit eða skipanir innan skeljaforskrifta og því þarftu að hafa skýran skilning á því hvernig á að nota skelbreytur innan Awk skipana.
Í næsta hluta Awk seríunnar munum við kafa inn í enn einn mikilvægan hluta Awk eiginleika, það er flæðistýringaryfirlýsingar. Svo fylgstu með og við skulum halda áfram að læra og deila.