Awk: Shell-komentosarjojen oppiminen awk Terminal -komennolla

Awk: Shell-komentosarjojen oppiminen awk Terminal -komennolla

Awk: Shell-komentosarjojen oppiminen awk Terminal -komennolla

GNU / Linux-tyyppinen "awk" -komento vapaissa käyttöjärjestelmissä on erittäin tehokas komento, joka auttaa meitä hallitsemaan paremmin käsiteltäessä tietoja muista komennoista tai komentokomennoista. Nimi AWK on peräisin kirjoittajien sukunimien nimikirjaimista: Alfred Aho, peter Weinberger ja Brian KErnighan.

Tämä komento tarjoaa komentosarjakielen tekstinkäsittelyyn, jolla voimme: Määritellä muuttujat, käyttää merkkijonoja ja aritmeettisia operaattoreita, käyttää vuonohjausta ja jaksoja sekä luoda alustettuja raportteja. Itse asiassa Awk on enemmän kuin pelkkä kuvionkäsittelykomento, se on koko semanttinen analyysikieli.

Johdanto "awk" -komentoon

AWK oli yksi ensimmäisistä erittäin suosituista konsoliohjelmista tietojen hallintaan (käsittelyyn / purkamiseen) maksimoimalla UNIX-putkilinjojen toimivuus. Tämän apuohjelman kieli on tällä hetkellä standardi melkein kaikissa nykyaikaisissa UNIX-tyyppisissä käyttöjärjestelmissä, niin että se on osa UNIX-perusmäärityksiä, joten se on yleensä jo asennettu useimpiin niistä oletuksena.

Sen yleisin syntaksia on: awk 'ohjelma' -tiedostot ja missä 'ohjelma' voi olla: kuvio {action} kuvio {action}. Komento lukee syötetyn tiedoston rivin kerrallaan. Kutakin riviä verrataan kuhunkin malliin järjestyksessä; Kutakin riviä vastaavaa kuviota varten suoritetaan vastaava toiminto.

Yksinkertainen esimerkki, kuten:

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

se kysyy ensimmäisen kentän, jos se on jokaisen rivin juuressa tiedostossa / etc / passwd, ja tulostaa sen ottaen huomioon ":" ja -F: kentänerottimena.

Johdantoesimerkki Awk

Käytännön esimerkkejä

Luettelo käytetyistä komennoista

Tarkastele luetteloa, joka perustuu Järjestelmän päätelaitteen historiaan järjestettynä yleisimmin käytettyihin vähiten.

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

esimerkiksi:

Esimerkki 1: Awk-komento

Kaavio (taulukko), jossa on kunkin isännän yhteyksien määrä

Luo ASCII-tekstipohjainen kaavio, joka näyttää isännän ja IP-yhteyksien kokonaismäärän.

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

esimerkiksi:

Esimerkki 2: Awk-komento

Luettelo hakemistoista koon mukaan

Tulosta näytölle luettelo nykyisen polun hakemistosta suurimmasta pienimpään ja näytä niiden kokoa vastaavat tarrat kirjaimilla: g, m ja 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}'

esimerkiksi:

Esimerkki 3: Awk-komento

Näytä liikenne verkkoliitännästä

Tarkastele saapuvan ja lähtevän datan kulutusta verkossa kilotavuina (kb) tietylle verkkoliitännälle.

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

esimerkiksi:

Hanki fibonacci-numerosarja

Luo luettelo X-määräluvuista fibonacci-mallin mukaisesti, jolloin annetaan kaksi rakennettavaa perusnumeroa.

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

esimerkiksi:

Esimerkki 5: Awk-komento

Graafinen luettelo tiedostorakenteesta koon mukaan

Hanki luettelo kaikista käyttöjärjestelmän juuren kansioista, graafinen esitys (pylväät) ja numeerinen esitys prosentteina niiden koon sisällä.

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

esimerkiksi:

Esimerkki 6: Awk-komento

Luettele yhteenveto tiedostotyypeistä hakemistossa

Näytä luettelo hakemistossa olevista tiedostotyypeistä sekä sitä vastaavien tiedostojen määrä.

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

esimerkiksi:

Esimerkki 8: Awk-komento

Nämä esimerkit awk-komentoa käyttävistä komentoriveistä ovat toivottavasti sinun mielestäsi erittäin hyödyllisiä. Ja niitä käytetään käytettäväksi suoraan konsolista tai epäsuorasti lisäämällä ne komentosarjaan (automaattinen tehtävä).

Seuraavassa Shell Scripting -viestissä tutkimme muita komentoja.

Jos haluat oppia lisää "grep" -komennosta, siirry tähän linkkiin "DEBIAN Wiki”Ja jos haluat oppia lisää Shell Scriptingistä omassa blogissamme, voit tutustua muihin aiheeseen liittyviin julkaisuihimme napsauttamalla tätä: Komentosarjat FromLinuxissa