Mụta ka esi eji mgbanwe Awk, Okwu ọnụọgụ na ndị na-arụ ọrụ - akụkụ 8


Usoro iwu Awk na-atọ ụtọ m kwenyere, n'ime akụkụ asaa gara aga, anyị gafere ụfọdụ isi nke Awk nke ị ga-achọ ịma iji mee ka ị rụọ ụfọdụ ederede ma ọ bụ eriri eriri na Linux.

Malite na akụkụ a, anyị ga-abanye n'ime mpaghara Awk n'ihu iji jikwaa ederede dị mgbagwoju anya ma ọ bụ ọrụ nzacha eriri. Ya mere, anyị ga-ekpuchi atụmatụ Awk dịka mgbanwe, okwu ọnụọgụ na ndị na-arụ ọrụ.

Echiche ndị a abụghị ihe dị iche na nke ị nwere ike ịhụta n'ọtụtụ asụsụ mmemme tupu shei dị otú ahụ, C, Python gbakwunyere ọtụtụ ndị ọzọ, yabụ na ọ dịghị mkpa ichegbu onwe gị banyere isiokwu a, anyị na-emegharị echiche nkịtị nke iji. atụmatụ ndị a ekwuru.

Nke a nwere ike ịbụ otu n'ime ngalaba iwu Awk kachasị mfe ịghọta, yabụ nọdụ ala ka hapụ ịga.

1. Awk mgbanwe

N'asụsụ mmemme ọ bụla, mgbanwe bụ ebe njide na-echekwa uru, mgbe ị na-emepụta mgbanwe na faịlụ mmemme, dị ka faịlụ a na-eme, a na-emepụta ụfọdụ ohere na ebe nchekwa nke ga-echekwa uru ị depụtara maka mgbanwe ahụ.

Ị nwere ike kọwapụta mgbanwe Awk n'otu aka ahụ ị na-akọwa ihe mgbanwe shei dị ka ndị a:

variable_name=value 

Na syntax dị n'elu:

  1. variable_name: bụ aha ị na-enye mgbanwe
  2. uru: uru echekwara na mgbanwe

Ka anyị lee ihe atụ ụfọdụ n'okpuru:

computer_name=”linux-console.net”
port_no=”22”
email=”[email ”
server=”computer_name”

Lelee ihe atụ ndị dị mfe dị n'elu, na nkọwa mgbanwe nke mbụ, uru linux-console.net ka ekenye ya na mgbanwe computer_name.

Ọzọkwa, e kenyere uru 22 na mgbanwe port_no, ọ ga-ekwe omume ikenye uru nke otu agbanwe na mgbanwe ọzọ dị ka n'ihe atụ ikpeazụ ebe anyị kenyere uru ahụ. nke computer_name gaa na sava agbanwe agbanwe.

Ọ bụrụ na ị nwere ike icheta, site na akụkụ nke 2 nke usoro Awk a ka anyị kpuchiri edezi ubi, anyị na-ekwu maka otu Awk si ekewa ahịrị ntinye n'ime ubi wee jiri onye na-ahụ maka ohere ubi, $ gụọ mpaghara dị iche iche ndị ahụ. a tụlere ya. Anyị nwekwara ike iji variables na-echekwa ụkpụrụ nke ubi dị ka ndị a.

first_name=$2
second_name=$3

N'atụmatụ ndị dị n'elu, a na-ahazi uru first_name ka ọ bụrụ ubi nke abụọ yana name_second_code> ka edobere n'ubi nke atọ.

Dịka ọmụmaatụ, tụlee faịlụ aha ya bụ names.txt nke nwere ndepụta nke ndị ọrụ ngwa na-egosi aha mbụ na aha ikpeazụ yana okike. Iji iwu pusi, anyị nwere ike ịlele ọdịnaya nke faịlụ ahụ dị ka ndị a:

$ cat names.txt

Mgbe ahụ, anyị nwekwara ike iji variables first_name na aha nke abụọ iji chekwaa aha mbụ na nke abụọ nke onye ọrụ mbụ na listi ahụ dị ka site na iji iwu Awk dị n'okpuru:

$ awk '/Aaron/{ first_name=$2 ; second_name=$3 ; print first_name, second_name ; }' names.txt

Ka anyị leba anya n'okwu ọzọ, mgbe ị nyere iwu uname -a na ọdụ gị, ọ na-ebipụta ozi sistemụ gị niile.

Ogige nke abụọ nwere aha nnabata gị, yabụ anyị nwere ike chekwaa aha nnabata na mgbanwe akpọrọ hostname wee bipụta ya site na iji Awk dị ka ndị a:

$ uname -a
$ uname -a | awk '{hostname=$2 ; print hostname ; }' 

2. Ọnụọgụ Okwu

N'Awk, a na-ewu okwu ọnụọgụgụ site na iji ọnụọgụ ọnụọgụ ndị a:

  1. * : Onye na-ahụ maka mmụba
  2. + : onye ọrụ mgbakwunye
  3. / : onye ọrụ nkewa
  4. - : onye ọrụ mwepu
  5. % : onye na-arụ ọrụ modulus
  6. ^ : onye na-ahụ maka nkọwapụta

Syntax maka okwu ọnụọgụgụ bụ:

$ operand1 operator operand2

N'ụdị dị n'elu, operand1 na operand2 nwere ike ịbụ nọmba ma ọ bụ aha agbanwe agbanwe, na operator bụ nke ọ bụla n'ime ndị na-arụ ọrụ n'elu.

N'okpuru bụ ọmụmaatụ ụfọdụ iji gosi otu esi ewulite ọnụọgụgụ:

counter=0
num1=5
num2=10
num3=num2-num1
counter=counter+1

Iji ghọta iji okwu ọnụọgụgụ na Awk, anyị ga-atụle ihe atụ n'okpuru ebe a, yana faịlụ domains.txt nke nwere ngalaba niile Tecmint nwere.

news.linux-console.net
linux-console.net
linuxsay.com
windows.linux-console.net
linux-console.net
news.linux-console.net
linux-console.net
linuxsay.com
linux-console.net
news.linux-console.net
linux-console.net
linuxsay.com
windows.linux-console.net
linux-console.net

Ka ilele ọdịnaya nke faịlụ ahụ, jiri iwu dị n'okpuru:

$ cat domains.txt

Ọ bụrụ na anyị chọrọ ịgụta ugboro ugboro ngalaba linux-console.net pụtara na faịlụ ahụ, anyị nwere ike ide ederede dị mfe iji mee nke ahụ dị ka ndị a:

#!/bin/bash
for file in [email ; do
        if [ -f $file ] ; then
                #print out filename
                echo "File is: $file"
                #print a number incrementally for every line containing linux-console.net 
                awk  '/^linux-console.net/ { counter=counter+1 ; printf "%s\n", counter ; }'   $file
        else
                #print error info incase input is not a file
                echo "$file is not a file, please specify a file." >&2 && exit 1
        fi
done
#terminate script with exit code 0 in case of successful execution 
exit 0

Mgbe ịmepụtara edemede ahụ, chekwaa ya ma mee ka ọ rụọ ọrụ, mgbe anyị na-eji faịlụ ahụ mee ya, domains.txt dị ka ntinye, anyị na-enweta mmepụta na-esonụ:

$ ./script.sh  ~/domains.txt

Site na mmepụta nke edemede ahụ, e nwere ahịrị 6 na faịlụ domains.txt nke nwere linux-console.net, iji gosi na ị nwere ike iji aka gụọ ha.

3. Ndị na-arụ ọrụ ọrụ

Akụkụ ikpeazụ Awk anyị ga-ekpuchi bụ ndị na-arụ ọrụ, enwere ọtụtụ ndị na-arụ ọrụ na Awk na ndị a gụnyere ndị a:

  1. *= : onye ọrụ ntinye otutu ihe
  2. += : onye ọrụ mgbakwunye ọrụ
  3. /= : onye ọrụ nkewa ọrụ
  4. -= : onye na-arụ ọrụ mwepu
  5. %= : Onye na-ahụ maka ọrụ modulus
  6. ^= : onye na-arụ ọrụ nkọwapụta

Okwu kachasị mfe nke ọrụ ọrụ na Awk bụ nke a:

$ variable_name=variable_name operator operand

Ọmụmaatụ:

counter=0
counter=counter+1

num=20
num=num-1

Ị nwere ike iji ndị na-ahụ maka ọrụ dị n'elu iji belata ọrụ ọrụ na Awk, tụlee ihe atụ ndị gara aga, anyị nwere ike ịrụ ọrụ ahụ n'ụdị a:

variable_name operator=operand
counter=0
counter+=1

num=20
num-=1

Ya mere, anyị nwere ike ịgbanwe iwu Awk na edemede shei anyị dere n'elu site na iji += onye ọrụ ọrụ dị ka ndị a:

#!/bin/bash
for file in [email ; do
        if [ -f $file ] ; then
                #print out filename
                echo "File is: $file"
                #print a number incrementally for every line containing linux-console.net 
                awk  '/^linux-console.net/ { counter+=1 ; printf  "%s\n",  counter ; }'   $file
        else
                #print error info incase input is not a file
                echo "$file is not a file, please specify a file." >&2 && exit 1
        fi
done
#terminate script with exit code 0 in case of successful execution 
exit 0

N'akụkụ a nke usoro Awk, anyị kpuchiri ụfọdụ atụmatụ Awk siri ike, ya bụ mgbanwe, ịmepụta okwu ọnụọgụ na iji ndị na-arụ ọrụ, yana ụfọdụ ihe atụ ole na ole nke otu anyị nwere ike isi jiri ha mee ihe.

Echiche ndị a adịghị iche na nke dị n'asụsụ mmemme ndị ọzọ mana enwere ike ịnwe ihe dị iche iche dị mkpa n'okpuru mmemme Awk.

N'akụkụ nke 9, anyị ga-elele atụmatụ Awk ndị ọzọ bụ ụkpụrụ pụrụ iche: BEGIN na END. Ruo mgbe ahụ, nọrọ na njikọ Tecment.