Jinsi ya Kuruhusu Awk Kutumia Vigezo vya Shell - Sehemu ya 11


Tunapoandika hati za ganda, kwa kawaida tunajumuisha programu nyingine ndogo au amri kama vile shughuli za Awk kwenye hati zetu. Kwa upande wa Awk, lazima tutafute njia za kupitisha maadili kadhaa kutoka kwa ganda hadi shughuli za Awk.

Hii inaweza kufanywa kwa kutumia vijiti vya ganda ndani ya amri za Awk, na katika sehemu hii ya safu, tutajifunza jinsi ya kuruhusu Awk kutumia vigeu vya ganda ambavyo vinaweza kuwa na maadili tunayotaka kupitisha kwa amri za Awk.

Kuna njia mbili unazoweza kuwezesha Awk kutumia vijiti vya ganda:

1. Kutumia Shell Quoting

Wacha tuangalie mfano ili kuonyesha jinsi unavyoweza kutumia nukuu ya ganda kuchukua nafasi ya thamani ya kutofautisha kwa ganda katika amri ya Awk. Katika mfano huu, tunataka kutafuta jina la mtumiaji katika faili /etc/passwd, chujio na uchapishe maelezo ya akaunti ya mtumiaji.

Kwa hivyo, tunaweza kuandika hati ya test.sh yenye maudhui yafuatayo:

#!/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 }'

Baada ya hayo, hifadhi faili na uondoke.

Ufafanuzi wa amri ya Awk katika hati ya test.sh hapo juu:

cat /etc/passwd | awk "/$username/ "' { print $0 }'

\/$username/ \ - nukuu ya ganda inayotumiwa kubadilisha thamani ya jina la mtumiaji linalobadilika kwa ganda katika amri ya Awk. Thamani ya jina la mtumiaji ni muundo wa kutafutwa katika faili /etc/passwd.

Kumbuka kuwa nukuu mara mbili iko nje ya hati ya Awk, ‘{ print $0 }’.

Kisha fanya hati itekelezwe na uiendeshe kama ifuatavyo:

$ chmod  +x  test.sh
$ ./text.sh 

Baada ya kuendesha hati, utaulizwa kuingiza jina la mtumiaji, chapa jina la mtumiaji halali na ubofye Ingiza. Utatazama maelezo ya akaunti ya mtumiaji kutoka kwa faili ya /etc/passwd kama ilivyo hapo chini:

2. Kutumia Mgawo Unaobadilika wa Awk

Njia hii ni rahisi zaidi na bora zaidi kwa kulinganisha na njia moja hapo juu. Kwa kuzingatia mfano hapo juu, tunaweza kuendesha amri rahisi ili kukamilisha kazi. Chini ya njia hii, tunatumia chaguo la -v kugawa kigezo cha ganda kwa kigezo cha Awk.

Kwanza, unda kitofauti cha ganda, jina la mtumiaji na uipe jina ambalo tunataka kutafuta katika /etc/passswd faili:

username="aaronkilik"

Kisha chapa amri hapa chini na gonga Enter:

# cat /etc/passwd | awk -v name="$username" ' $0 ~ name {print $0}'

Ufafanuzi wa amri hapo juu:

  1. -v - Chaguo Awk kutangaza kigezo
  2. jina la mtumiaji - ni muundo wa ganda
  3. jina - ni kigezo cha Awk

Hebu tuangalie kwa makini $0 ~ name ndani ya hati ya Awk, $0 ~ name {print $0}. Kumbuka, tuliposhughulikia waendeshaji ulinganishaji wa Awk katika Sehemu ya 4 ya mfululizo huu, mojawapo ya waendeshaji ulinganishaji ilikuwa thamani ~ muundo, ambayo ina maana: kweli ikiwa thamani inalingana na mchoro.

output($0) ya paka amri iliyotumwa kwa Awk inalingana na mchoro (aaronkilik) ambalo ni jina tunalotafuta katika /etc/passwd, kwa sababu hiyo, operesheni ya kulinganisha ni kweli. Mstari ulio na maelezo ya akaunti ya mtumiaji kisha huchapishwa kwenye skrini.

Hitimisho

Tumeshughulikia sehemu muhimu ya vipengee vya Awk, ambavyo vinaweza kutusaidia kutumia vigeu vya ganda ndani ya amri za Awk. Mara nyingi, utaandika programu ndogo za Awk au amri ndani ya hati za ganda na kwa hivyo, unahitaji kuwa na ufahamu wazi wa jinsi ya kutumia vijiti vya ganda ndani ya amri za Awk.

Katika sehemu inayofuata ya mfululizo wa Awk, tutazama katika sehemu nyingine muhimu ya vipengele vya Awk, hiyo ni taarifa za udhibiti wa mtiririko. Kwa hivyo endelea kufuatilia na tuendelee kujifunza na kushiriki.