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:
variable_name
: bụ aha ị na-enye mgbanweuru
: 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:
*
: Onye na-ahụ maka mmụba+
: onye ọrụ mgbakwunye/
: onye ọrụ nkewa-
: onye ọrụ mwepu%
: onye na-arụ ọrụ modulus^
: 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:
*=
: onye ọrụ ntinye otutu ihe+=
: onye ọrụ mgbakwunye ọrụ/=
: onye ọrụ nkewa ọrụ-=
: onye na-arụ ọrụ mwepu%=
: Onye na-ahụ maka ọrụ modulus^=
: 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.