Awk: Pag-aaral ng Shell Scripting Gamit ang awk Terminal Command
Ang "awk" na utos sa Mga Libreng Operating System ng uri ng GNU / Linux ay isang napakalakas na utos, na makakatulong sa amin na magkaroon ng higit na kontrol kapag nagpoproseso ng data mula sa iba pang mga utos o utos ng utos. Ang pangalang AWK ay nagmula sa mga inisyal ng apelyido ng mga may-akda nito: Alfred Aho, peter Weinberger, at Brian KErnighan.
Nagbibigay ang utos na ito ng isang wika ng scripting para sa pagproseso ng teksto kung saan maaari naming: Tukuyin ang mga variable, gumamit ng mga string at operator ng arithmetic, gumamit ng kontrol sa daloy at mga pag-ikot, at makabuo ng mga naka-format na ulat. Sa totoo lang, ang Awk ay higit pa sa isang pattern ng pagpoproseso ng utos, ito ay isang buong wika ng pagsusuri sa semantiko.
Panimula sa "awk" na utos
Ang AWK ay isa sa kauna-unahang tanyag na mga kagamitan sa console para sa pamamahala ng (paghawak / pagkuha) ng data sa pamamagitan ng pag-maximize sa pagpapaandar ng mga pipeline ng UNIX. Ang wikang ibinigay ng utility na ito ay kasalukuyang isang pamantayan sa halos lahat ng mga modernong Operating System na tulad ng UNIX, kaya't bahagi ito ng pangunahing Mga pagtutukoy ng UNIX, kaya't karaniwang naka-install na ito sa karamihan sa kanila bilang default.
Ang pinaka-karaniwang syntax nito ay ang: mga file na 'program' na awk at kung saan maaaring maging ang 'program': pattern {pattern} pagkilos {pagkilos}. Binabasa ng utos ang pag-input ng file ng isang linya nang paisa-isa. Ang bawat hilera ay inihambing sa bawat pattern sa pagkakasunud-sunod; Para sa bawat pattern na tumutugma sa hilera, isinasagawa ang kaukulang aksyon.
Isang simpleng halimbawa tulad ng:
awk -F: '$1=="root" {print}' /etc/passwd
hiningi nito ang unang patlang kung ito ay ugat ng bawat linya sa / etc / passwd at i-print ito isinasaalang-alang ang ":" na may -F: bilang isang separator ng patlang.
Mga praktikal na halimbawa
Pinaka ginagamit na listahan ng utos
Tingnan ang isang listahan batay sa kasaysayan ng terminal ng System na iniutos mula sa pinaka madalas na ginagamit hanggang sa pinakamaliit.
history | awk '{a[$2]++}END{for(i in a){print a[i] " " i}}' | sort -rn | head
Halimbawa:

Grap (Talahanayan) na may bilang ng mga koneksyon para sa bawat host
Lumikha ng isang graph na batay sa teksto ng ASCII na nagpapakita ng kabuuang bilang ng mga koneksyon mula sa host sa bawat IP address.
netstat -an | grep ESTABLISHED | awk '{print $5}' | awk -F: '{print $1}' | sort | uniq -c | awk '{ printf("%s\t%s\t",$2,$1) ; for (i = 0; i < $1; i++) {printf("*")}; print "" }'
Halimbawa:

Listahan ng mga Direktoryo ayon sa laki
I-print sa screen ang listahan ng mga direktoryo ng kasalukuyang landas mula sa pinakamalaki hanggang sa pinakamaliit na nagpapakita ng mga label na naaayon sa kanilang laki gamit ang mga titik: g, m, at k.
du --max-depth=1 | sort -r -n | awk '{split("k m g",v); s=1; while($1>1024){$1/=1024; s++} print int($1)" "v[s]"\t"$2}'
Halimbawa:

Ipakita ang trapiko mula sa isang Network Interface
Tingnan ang papasok at papasok na pagkonsumo ng data sa online sa kilobytes (kb) para sa isang tinukoy na interface ng network.
while [ /bin/true ]; do OLD=$NEW; NEW=`cat /proc/net/dev | grep eth0 | tr -s ' ' | cut -d' ' -f "3 11"`; echo $NEW $OLD | awk '{printf("\rin: % 9.2g\t\tout: % 9.2g", ($1-$3)/1024, ($2-$4)/1024)}'; sleep 1; done
Halimbawa:

Kumuha ng isang serye ng numero ng fibonacci
Lumikha ng isang listahan ng mga numero ng dami ng X na sumusunod sa isang pattern ng fibonacci na binigyan ng 2 mga base number na maitatayo.
seq 50| awk 'BEGIN {a=1; b=1} {print a; c=a+b; a=b; b=c}'
Halimbawa:

Listahan ng grapiko ng istraktura ng file ayon sa laki
Kumuha ng isang Listahan ng lahat ng mga folder sa ugat ng operating system kasama ang graphic (bar) at representasyong bilang bilang isang porsyento ng kanilang laki sa loob nito.
t=$(df|awk 'NR!=1{sum+=$2}END{print sum}');sudo du / --max-depth=1|sed '$d'|sort -rn -k1 | awk -v t=$t 'OFMT="%d" {M=64; for (a=0;a<$1;a++){if (a>c){c=a}}br=a/c;b=M*br;for(x=0;x<b;x++){printf "\033[1;31m" "|" "\033[0m"}print " "$2" "(a/t*100)"% total"}'
Halimbawa:

Maglista ng isang buod ng mga uri ng file sa isang Directory
Ipakita ang isang listahan ng mga uri ng mga file na nilalaman sa isang direktoryo kasama ang bilang ng mga file na tumutugma dito.
find . -type f | awk -F'.' '{print $NF}' | sort| uniq -c | sort -g
Halimbawa:

Ang mga halimbawang ito ng mga linya ng utos gamit ang awk command Inaasahan kong napakinabangan mo ito. At nagsisilbi sila upang magamit nang direkta mula sa console o hindi direkta sa pamamagitan ng pagpasok ng mga ito sa isang script (awtomatikong gawain).
Sa susunod na post sa Shell Scripting susuriin namin ang iba pang mga utos.
Kung nais mong malaman nang kaunti pa tungkol sa "grep" utos bisitahin ang link na ito "DEBIAN Wiki”At kung nais mong matuto nang higit pa tungkol sa Shell Scripting sa aming sariling Blog, maaari mong tingnan ang aming iba pang mga pahayagan sa paksa, sa pamamagitan ng pag-click dito: Pag-script sa FromLinux
