Awk: Fianarana script scripting amin'ny alàlan'ny awk Terminal Command

Awk: Fianarana script scripting amin'ny alàlan'ny awk Terminal Command

Awk: Fianarana script scripting amin'ny alàlan'ny awk Terminal Command

Ny baiko "awk" ao amin'ny Free Operating Systems an'ny karazana GNU / Linux dia baiko mahery vaika izay manampy antsika hanana fifehezana lehibe kokoa rehefa manodina angona avy amin'ny baiko hafa na baiko baiko. Ny anarana AWK dia nalaina avy amin'ny voalohany amin'ny anaram-bosotra ny mpanoratra: Alfred Aho, peter Weinberger, sy Brian Kernighan.

Ity baiko ity dia manome fiteny scripting ho an'ny fikirakirana lahatsoratra ahafahantsika: Mamaritra ireo miovaova, mampiasa kofehy sy mpandraharaha arithmetika, mampiasa fifehezana ny tsiranoka ary tsingerina ary miteraka tatitra voarindra. Raha ny marina, Awk dia mihoatra ny baiko fanodinana lamina fotsiny, fiteny fandinihana semantis iray manontolo.

Fampidirana ny baiko "awk"

AWK dia iray amin'ireo fitaovana fampitaovana voalohany malaza indrindra amin'ny fitantanana (fikirakirana / fitrandrahana) angona amin'ny alàlan'ny fampitomboana bebe kokoa ny fampiasa amin'ny pipes UNIX. Ny fiteny omen'ity fampiasana ity dia fenitra iray ao amin'ny ankamaroan'ny UNIX Modern Operating Systems ankehitriny, hany ka tafiditra ao anatin'ny Famaritana UNIX fototra izy io, noho izany matetika dia efa napetraka ao amin'ny ankamaroan'izy ireo amin'ny alàlan'ny default.

Ny syntax mahazatra indrindra dia ny: fisie 'program' awk ary aiza no mety hisy ny 'program': lamina {action} lamina {action}. Ny baiko dia mamaky tsipika iray isaky ny mandeha ny fisie. Ny laharana tsirairay dia ampitahaina amin'ny lamina tsirairay milahatra; isaky ny lamina mifanaraka amin'ny laharana dia atao ny hetsika mifanaraka amin'izany.

Ohatra tsotra toy ny:

awk -F: '$1=="root" {print}' /etc/passwd

mangataka ny saha voalohany izy io raha faka faka isaky ny tsipika ao amin'ny / etc / passwd ary manonta azy mandinika ny ":" miaraka amin'i -F: toy ny mpampisaraka saha.

Ohatra fampidirana Awk

Ohatra azo ampiharina

Lisitry ny baiko fampiasa indrindra

Jereo ny lisitra iray mifototra amin'ny tantaran'ny terminal terminal nalahatra hatramin'ny be mpampiasa indrindra hatramin'ny kely indrindra.

history | awk '{a[$2]++}END{for(i in a){print a[i] " " i}}' | sort -rn | head

ohatra:

Ohatra 1: baiko Awk

Kisary (Tabilao) misy isan'ny fifandraisana isaky ny mpampiantrano

Mamorona sary mifototra amin'ny ASCII izay mampiseho ny isan'ny fifandraisana avy amin'ny mpampiantrano isaky ny adiresy IP.

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 "" }'

ohatra:

Ohatra 2: baiko Awk

Lisitry ny lahatahiry araka ny habeny

Ataovy pirinty eo amin'ny efijery ny lisitry ny lahatahiry ny làlana ankehitriny manomboka amin'ny lehibe indrindra ka hatramin'ny kely indrindra mampiseho ireo marika mifanaraka amin'ny habeny amin'ny fampiasana litera: g, m, ary 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}'

ohatra:

Ohatra 3: baiko Awk

Asehoy ny fifamoivoizana avy amin'ny Network Interface

Jereo ny fanjifana angon-drakitra miditra sy anaty an-tserasera amin'ny kilobytes (kb) raha mila tambajotra voafaritra voafaritra tsara.

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

ohatra:

Mahazoa andiam-laharam-pifandraisana

Mamorona lisitr'ireo isa X izay manaraka ny fari-tariby nomen'ny isa nomen'ny isa 2 hananganana azy.

seq 50| awk 'BEGIN {a=1; b=1} {print a; c=a+b; a=b; b=c}'

ohatra:

Ohatra 5: baiko Awk

Lisitra sary momba ny firafitry ny rakitra araka ny habeny

Makà lisitry ny lahatahiry rehetra ao amin'ny fakan'ny rafitra fiasa miaraka amin'ny sary (bara) sy ny fisoloana isa ho isan-jaton'ny habe ao anatiny.

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"}'

ohatra:

Ohatra 6: baiko Awk

Tanisao ny famintinana ireo karazana rakitra ao amin'ny Directory

Asehoy ny lisitry ny karazana fisie ao anaty lahatahiry miaraka amin'ny isan'ireo rakitra.

find . -type f | awk -F'.' '{print $NF}' | sort| uniq -c | sort -g

ohatra:

Ohatra 8: baiko Awk

Ireto ohatra zotram-baiko amin'ny alàlan'ny baiko awk manantena aho fa hitanao fa mahasoa azy tokoa. Ary izy ireo dia azo ampiasaina hampiasaina mivantana avy amin'ny console na ankolaka amin'ny alàlan'ny fampidirana azy ireo ao anaty script (automated task).

Ao amin'ny lahatsoratra manaraka amin'ny Shell Scripting dia hijery didy hafa isika.

Raha te hianatra bebe kokoa momba ny baiko "grep" ianao dia tsidiho ity rohy ity "DEBIAN Wiki”Ary raha te hahafantatra bebe kokoa momba ny Shell Scripting ao amin'ny bilaoginay manokana ianao, azonao atao ny mijery ireo bokinay hafa momba an'io lohahevitra io, amin'ny alàlan'ny fanindriana eto: Fikirakirana ao amin'ny FromLinux


Ny atin'ny lahatsoratra dia manaraka ny fitsipiky ny etika fanonta. Raha hitatitra tsindry diso eto.

Fanehoan-kevitra iray, avelao ny anao

Avelao ny hevitrao

Ny adiresy email dia tsy ho namoaka. Mitaky saha dia marika amin'ny *

*

*

  1. Tompon'andraikitra amin'ny data: Miguel Ángel Gatón
  2. Tanjon'ny angona: Control SPAM, fitantanana hevitra.
  3. Legitimation: Ny fanekenao
  4. Fifandraisana momba ny angona: Tsy hampitaina amin'ny antoko fahatelo ny angona raha tsy amin'ny adidy ara-dalàna.
  5. Fitehirizana angona: Database nomen'ny Occentus Networks (EU)
  6. Zo: Amin'ny fotoana rehetra, azonao atao ny mametra, mamerina ary mamafa ny mombamomba anao.

  1.   Tuxito dia hoy izy:

    Ny ohatra voalohany ihany no azoko, tsy misy zavatra hafa 🙁