Awk: Lernado de Ŝelaj Skriptoj Uzante la Komandon Terminalo awk

Awk: Lernado de Ŝelaj Skriptoj Uzante la Komandon Terminalo awk

Awk: Lernado de Ŝelaj Skriptoj Uzante la Komandon Terminalo awk

La komando "awk" en Liberaj Operaciumoj de la tipo GNU / Linukso estas tre potenca komando, kiu helpas nin havi pli grandan kontrolon dum prilaborado de datumoj de aliaj komandoj aŭ komandaj komandoj. La nomo AWK devenas de la inicialoj de la familiaj nomoj de ĝiaj aŭtoroj: Alfred Aho, peter Weinberger, kaj Brian Kernighan.

Ĉi tiu komando donas skriptlingvon por tekstoprilaborado, per kiu ni povas: Difini variablojn, uzi ĉenojn kaj aritmetikajn operatorojn, uzi fluokontrolon kaj ciklojn, kaj generi formatitajn raportojn. Fakte Awk estas pli ol nur komando pri mastruma prilaborado, ĝi estas tuta semantika analiza lingvo.

Enkonduko al la komando "awk"

AWK estis unu el la unuaj tre popularaj konzolaj serviloj por administri (pritrakti / ĉerpi) datumojn maksimumigante la funkciadon de UNIX-tuboj. La lingvo donita de ĉi tiu ilo estas nuntempe normo en preskaŭ ĉiuj modernaj UNIX-specaj Operaciumoj, tiom ke ĝi estas parto de la bazaj Specifoj de UNIX, do ĝi kutime estas jam instalita en plej multaj el ili defaŭlte.

Ĝia plej ofta sintakso estas: awk 'programaj' dosieroj kaj kie 'programo' povas esti: ŝablono {ago} ŝablono {ago}. La komando legas la enigan dosieron po unu linio. Ĉiu vico estas komparata al ĉiu ŝablono en ordo; Por ĉiu ŝablono, kiu kongruas kun la vico, plenumiĝas la responda ago.

Simpla ekzemplo kiel:

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

ĝi petas la unuan kampon se ĝi estas la radiko de ĉiu linio en / etc / passwd kaj presas ĝin konsiderante la ":" kun -F: kiel kampa apartigilo.

Enkonduka Ekzemplo Awk

Praktikaj ekzemploj

Listo de plej uzataj komandoj

Rigardu liston bazitan sur la historio de la Sistema terminalo ordigita de la plej ofte uzata ĝis la malplej.

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

Ekzemplo:

Ekzemplo 1: Komando Awk

Grafikaĵo (Tabelo) kun nombro de ligoj por ĉiu gastiganto

Kreu tekston ASCII-bazitan grafeon, kiu montras la tutan nombron de konektoj de la gastiganto al ĉiu IP-adreso.

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

Ekzemplo:

Ekzemplo 2: Komando Awk

Listo de Dosierujoj laŭ grandeco

Presu surekrane la liston de dosierujoj de la aktuala vojo de la plej granda al la plej malgranda montrante la etikedojn konformajn al ilia grandeco per la literoj: g, m kaj 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}'

Ekzemplo:

Ekzemplo 3: Komando Awk

Montru trafikon de Reta Interfaco

Rigardu enirantan kaj elirantan datumkonsumon interrete en kilobajtoj (kb) por specifa retinterfaco.

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

Ekzemplo:

Akiru fibonacci-nombroserion

Kreu liston de X-kvantaj nombroj laŭ fibonacci-ŝablono donitaj 2 konstruotaj bazaj nombroj.

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

Ekzemplo:

Ekzemplo 5: Komando Awk

Grafika listo de dosierstrukturo laŭ grandeco

Akiru Liston de ĉiuj dosierujoj en la radiko de la operaciumo kune kun la grafika (stangoj) kaj nombra reprezento kiel procento de ilia grandeco ene de ĝi.

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

Ekzemplo:

Ekzemplo 6: Komando Awk

Enlistigu resumon de dosiertipoj en Adresaro

Montru liston de la specoj de dosieroj en dosierujo kune kun la nombro de dosieroj, kiuj respondas al ĝi.

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

Ekzemplo:

Ekzemplo 8: Komando Awk

Ĉi tiujn ekzemplojn de komandlinioj per la komando awk mi esperas, ke vi trovos ĝin tre utila. Kaj ili povas esti uzataj rekte de la konzolo aŭ nerekte enmetante ilin en skripton (aŭtomata tasko).

En la sekva afiŝo pri Shell Scripting ni esploros aliajn komandojn.

Se vi volas lerni iom pli pri la komando "grep" vizitu ĉi tiun ligon "Vikio DEBIAN”Kaj se vi volas lerni pli pri Shell-Skriptado en nia propra Blogo, vi povas rigardi niajn aliajn eldonaĵojn pri la temo, alklakante ĉi tie: Skribado en FromLinux


La enhavo de la artikolo aliĝas al niaj principoj de redakcia etiko. Por raporti eraron alklaku Ĉi tie.

Komento, lasu la vian

Lasu vian komenton

Via retpoŝta adreso ne estos eldonita. Postulita kampojn estas markita per *

*

*

  1. Respondeculo pri la datumoj: Miguel Ángel Gatón
  2. Celo de la datumoj: Kontrola SPAM, administrado de komentoj.
  3. Legitimado: Via konsento
  4. Komunikado de la datumoj: La datumoj ne estos komunikitaj al triaj krom per laŭleĝa devo.
  5. Stokado de datumoj: Datumbazo gastigita de Occentus Networks (EU)
  6. Rajtoj: Iam ajn vi povas limigi, retrovi kaj forigi viajn informojn.

  1.   Tuxito diris

    Mi nur komprenis la unuan ekzemplon, nenion alian 🙁