Awk: Shell skriptu mācīšanās, izmantojot komandu awk Terminal

Awk: Shell skriptu mācīšanās, izmantojot komandu awk Terminal

Awk: Shell skriptu mācīšanās, izmantojot komandu awk Terminal

GNU / Linux tipa brīva operētājsistēmas komanda "awk" ir ļoti spēcīga komanda, kas palīdz mums labāk kontrolēt, apstrādājot datus no citām komandām vai komandām. Nosaukums AWK cēlies no tā autoru uzvārdu iniciāļiem: Alfrēds Aho, pēteris Weinbergers un Braiens Kernigans.

Šī komanda nodrošina skriptu valodu teksta apstrādei, ar kuras palīdzību mēs varam: definēt mainīgos, izmantot virknes un aritmētiskos operatorus, izmantot plūsmas kontroli un ciklus un ģenerēt formatētus pārskatus. Patiesībā Awk ir vairāk nekā tikai modeļa apstrādes komanda, tā ir visa semantiskās analīzes valoda.

Ievads komandā "awk"

AWK bija viena no pirmajām ļoti populārajām konsoles utilītprogrammām, kas pārvaldīja (apstrādā / izvelk) datus, maksimizējot UNIX cauruļu funkcionalitāti. Šīs utilītas piedāvātā valoda šobrīd ir standarts gandrīz visās mūsdienu UNIX līdzīgajās operētājsistēmās, tik daudz, ka tā ir daļa no UNIX pamata specifikācijām, tāpēc parasti pēc noklusējuma tā jau ir instalēta lielākajā daļā.

Visizplatītākā sintakse ir: awk 'programmas' faili un kur var būt 'programma': modelis {darbība} raksts {darbība}. Komanda nolasa faila ievadi pa vienai rindai. Katra rinda pēc kārtas tiek salīdzināta ar katru modeli; Katram modelim, kas atbilst rindai, tiek veikta atbilstošā darbība.

Tāds vienkāršs piemērs kā:

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

tas prasa pirmo lauku, ja tas ir katras / etc / passwd rindas sakne, un to izdrukā, ņemot vērā lauka atdalītāju ":" ar -F:.

Ievada piemērs Awk

Praktiski piemēri

Visbiežāk izmantoto komandu saraksts

Skatiet sarakstu, pamatojoties uz Sistēmas termināla vēsturi, kas sakārtota no visbiežāk izmantotās līdz vismazāk.

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

piemērs:

1. piemērs: Awk komanda

Grafiks (tabula) ar savienojumu skaitu katram resursdatoram

Izveidojiet uz teksta balstītu ASCII diagrammu, kas parāda kopējo pieslēgumu skaitu no resursdatora uz katru IP adresi.

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

piemērs:

2. piemērs: Awk komanda

Katalogu saraksts pēc lieluma

Uz ekrāna izdrukājiet pašreizējā ceļa direktoriju sarakstu no lielākajiem līdz mazākajiem, parādot etiķetes, kas atbilst to lielumam, izmantojot burtus: g, m un 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}'

piemērs:

3. piemērs: Awk komanda

Rādīt trafiku no tīkla saskarnes

Skatiet ienākošo un izejošo datu patēriņu tiešsaistē kilobaitos (kb) norādītajam tīkla interfeisam.

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

piemērs:

Iegūstiet fibonacci skaitļu sēriju

Izveidojiet X daudzuma numuru sarakstu pēc fibonači modeļa, ņemot vērā 2 konstruējamos bāzes numurus.

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

piemērs:

5. piemērs: Awk komanda

Grafisks failu struktūras saraksts pēc lieluma

Iegūstiet visu operētājsistēmas saknes mapju sarakstu kopā ar grafiku (joslām) un skaitlisko attēlojumu procentos no to lieluma tajā.

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

piemērs:

6. piemērs: Awk komanda

Sarakstā norādiet failu tipu kopsavilkumu

Parādiet direktorijā esošo failu tipu sarakstu ar tam atbilstošo failu skaitu.

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

piemērs:

8. piemērs: Awk komanda

Šie komandrindu piemēri, izmantojot komandu awk, ceru, ka jums tas būs ļoti noderīgi. Un tos var izmantot, lai tos izmantotu tieši no konsoles vai netieši, ievietojot tos skriptā (automatizēts uzdevums).

Nākamajā ziņojumā par Shell Scripting mēs izpētīsim citas komandas.

Ja vēlaties uzzināt nedaudz vairāk par komandu "grep", apmeklējiet šo saiti "VĀRDU VALODA”Un, ja vēlaties uzzināt vairāk par Shell Scripting mūsu pašu emuārā, jūs varat apskatīt citas mūsu publikācijas par šo tēmu, noklikšķinot šeit: Skriptēšana DesdeLinux


Atstājiet savu komentāru

Jūsu e-pasta adrese netiks publicēta. Obligātie lauki ir atzīmēti ar *

*

*

  1. Atbildīgais par datiem: Migels Ángels Gatóns
  2. Datu mērķis: SPAM kontrole, komentāru pārvaldība.
  3. Legitimācija: jūsu piekrišana
  4. Datu paziņošana: Dati netiks paziņoti trešām personām, izņemot juridiskus pienākumus.
  5. Datu glabāšana: datu bāze, ko mitina Occentus Networks (ES)
  6. Tiesības: jebkurā laikā varat ierobežot, atjaunot un dzēst savu informāciju.

  1.   tuxito teica

    Es sapratu tikai pirmo piemēru, neko citu 🙁