Awk: „Shell“ scenarijų mokymasis naudojant „awk“ terminalo komandą

Awk: „Shell“ scenarijų mokymasis naudojant „awk“ terminalo komandą

Awk: „Shell“ scenarijų mokymasis naudojant „awk“ terminalo komandą

GNU / Linux tipo komanda „awk“ laisvose operacinėse sistemose yra labai galinga komanda, padedanti mums geriau kontroliuoti apdorojant duomenis iš kitų komandų ar komandų komandų. AWK pavadinimas kilęs iš jo autorių pavardžių inicialų: Alfredas Aho, peter Weinbergeris ir Brianas Kerniganas.

Ši komanda suteikia teksto apdorojimo scenarijų kalbą, kuria mes galime: Apibrėžti kintamuosius, naudoti eilutes ir aritmetikos operatorius, naudoti srauto valdymą ir ciklus bei generuoti suformatuotas ataskaitas. Tiesą sakant, „Awk“ yra ne tik šablonų apdorojimo komanda, bet ir visa semantinės analizės kalba.

Įvadas į komandą „awk“

AWK buvo viena iš pirmųjų labai populiarių konsolės paslaugų, skirtų valdyti (tvarkyti / išgauti) duomenis maksimaliai padidinant UNIX vamzdynų funkcionalumą. Šio įrankio teikiama kalba šiuo metu yra beveik visų šiuolaikinių UNIX tipo operacinių sistemų standartas, tiek, kad ji yra pagrindinių UNIX specifikacijų dalis, todėl dažniausiai pagal numatytuosius nustatymus ji jau įdiegta daugumoje jų.

Dažniausiai pasitaikanti sintaksė yra: awk „programos“ failai ir kur gali būti „programa“: šablonas {veiksmas} šablonas {veiksmas}. Komanda nuskaito failo įvestį po vieną eilutę. Kiekviena eilutė yra lyginama su kiekvienu modeliu tvarka; Kiekvienam modeliui, atitinkančiam eilutę, atliekamas atitinkamas veiksmas.

Paprastas pavyzdys, pavyzdžiui:

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

jis prašo pirmojo lauko, jei jis yra kiekvienos eilutės šaknyje / etc / passwd, ir jį išspausdina atsižvelgdamas į „:“ su -F: kaip lauko separatorių.

Įvadinis pavyzdys Awk

Praktiniai pavyzdžiai

Dažniausiai naudojamų komandų sąrašas

Peržiūrėkite sąrašą pagal sistemos terminalo istoriją, sutvarkytą nuo dažniausiai naudojamų iki mažiausiai.

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

pavyzdys:

1 pavyzdys: komanda Awk

Grafikas (lentelė) su kiekvieno kompiuterio jungčių skaičiumi

Sukurkite ASCII teksto schemą, kurioje būtų parodytas bendras ryšių iš pagrindinio kompiuterio ir kiekvieno IP adreso skaičius.

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

pavyzdys:

2 pavyzdys: komanda Awk

Katalogų sąrašas pagal dydį

Ekrane atspausdinkite dabartinio kelio katalogų sąrašą nuo didžiausio iki mažiausio, nurodydami jų dydį atitinkančias etiketes raidėmis: g, m ir 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}'

pavyzdys:

3 pavyzdys: komanda Awk

Rodyti srautą iš tinklo sąsajos

Peržiūrėkite gaunamų ir siunčiamų duomenų suvartojimą internete kilobaitais (kb) nurodytoje tinklo sąsajoje.

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

pavyzdys:

Gaukite fibonacci skaičių seriją

Sukurkite X kiekio skaičių sąrašą pagal fibonacci modelį, nurodydami 2 pagrindinius skaičius, kurie bus sukonstruoti.

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

pavyzdys:

5 pavyzdys: komanda Awk

Grafinis failų struktūros sąrašas pagal dydį

Gaukite visų operacinės sistemos šakninių aplankų sąrašą kartu su grafika (juostomis) ir skaitmeniniu vaizdu procentais nuo jų dydžio joje.

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

pavyzdys:

6 pavyzdys: komanda Awk

Pateikite failų tipų santrauką kataloge

Rodyti kataloge esančių failų tipų sąrašą kartu su jį atitinkančių failų skaičiumi.

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

pavyzdys:

8 pavyzdys: komanda Awk

Šie komandų eilutės, naudojant komandą awk, pavyzdžiai, tikiuosi, kad jums tai labai naudinga. Jie naudojami naudoti tiesiogiai iš konsolės arba netiesiogiai, įterpiant juos į scenarijų (automatinė užduotis).

Kitame „Shell Scripting“ įraše mes nagrinėsime kitas komandas.

Jei norite sužinoti šiek tiek daugiau apie komandą "grep", apsilankykite šioje nuorodoje "DEBIAN Wiki“Ir jei norite sužinoti daugiau apie„ Shell Scripting “mūsų pačių tinklaraštyje, galite peržiūrėti kitus mūsų leidinius šia tema, spustelėdami čia: Scenarijus DesdeLinux


Palikite komentarą

Jūsų elektroninio pašto adresas nebus skelbiamas. Privalomi laukai yra pažymėti *

*

*

  1. Atsakingas už duomenis: Miguel Ángel Gatón
  2. Duomenų paskirtis: kontroliuoti šlamštą, komentarų valdymą.
  3. Įteisinimas: jūsų sutikimas
  4. Duomenų perdavimas: Duomenys nebus perduoti trečiosioms šalims, išskyrus teisinius įsipareigojimus.
  5. Duomenų saugojimas: „Occentus Networks“ (ES) talpinama duomenų bazė
  6. Teisės: bet kuriuo metu galite apriboti, atkurti ir ištrinti savo informaciją.

  1.   Tuxito sakė

    Aš supratau tik pirmąjį pavyzdį, nieko kito 🙁