A GNU / Linux típusú "awk" parancs a szabad operációs rendszerekben nagyon hatékony parancs, amely segít nekünk abban, hogy nagyobb irányítást élvezzünk más parancsokból vagy parancsokból származó adatok feldolgozásakor. Az AWK név szerzői vezetéknevek kezdőbetűiből származik: Alfred Aho, Péter Weinberger és Brian KErnighan.
Ez a parancs egy szkriptnyelvet biztosít a szövegfeldolgozáshoz, amellyel a következőket tehetjük: Változók meghatározása, karaktersorozatok és számtani operátorok használata, folyamatvezérlés és ciklusok használata, valamint formázott jelentések létrehozása. Valójában az Awk nem csak mintázatfeldolgozó parancs, hanem egy egész szemantikus elemzési nyelv.
Bevezetés az "awk" parancsba
Az AWK volt az első nagyon népszerű konzol segédprogram az adatok kezelésére (kezelésére / kinyerésére) a UNIX csővezetékek funkcionalitásának maximalizálása révén. A segédprogram által biztosított nyelv jelenleg szinte minden modern UNIX-típusú operációs rendszer szabványa, olyannyira, hogy része az alapvető UNIX-specifikációknak, így általában a legtöbbjükhöz alapértelmezés szerint már telepítve van.
A leggyakoribb szintaxisa: awk 'program' fájlok és hol lehet a 'program': minta {action} pattern {action}. A parancs soronként olvassa a bemeneti fájlt. Minden sort sorrendben összehasonlítunk az egyes mintákkal; Minden sorhoz illeszkedő minta esetében a megfelelő műveletet hajtják végre.
Egy egyszerű példa, például:
awk -F: '$1=="root" {print}' /etc/passwd
kéri az első mezőt, ha az / etc / passwd minden sorának gyökere, és kinyomtatja, figyelembe véve a ":" mezőt az -F: mezőelválasztóként.
Gyakorlati példák
A leggyakrabban használt parancsok listája
Tekintse meg a listát a Rendszer terminál előzményei alapján, a leggyakrabban használtaktól a legkevésbé rendezve.
history | awk '{a[$2]++}END{for(i in a){print a[i] " " i}}' | sort -rn | head
Példa:
Grafikon (táblázat) az egyes gazdagépek kapcsolatainak számával
Hozzon létre egy ASCII szöveges grafikont, amely megmutatja a gazdagéptől az egyes IP-címekig tartó kapcsolatok teljes számát.
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 "" }'
Példa:
A könyvtárak listája méret szerint
A képernyőn kinyomtathatja az aktuális útvonal könyvtárainak listáját a legnagyobbtól a legkisebbig, bemutatva a méretüknek megfelelő címkéket a g, m és k betűkkel.
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}'
Példa:
Forgalom megjelenítése hálózati interfészről
Tekintse meg online a bejövő és a kimenő adatfogyasztást kilobájtban (kb) egy adott hálózati interfészhez.
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
Példa:
Szerezzen be egy fibonacci számsort
Hozzon létre egy X mennyiségi számot egy fibonacci mintát követve, amelyhez 2 alapszámot kell összeállítani.
seq 50| awk 'BEGIN {a=1; b=1} {print a; c=a+b; a=b; b=c}'
Példa:
A fájlstruktúra grafikus felsorolása méret szerint
Szerezzen be egy listát az operációs rendszer gyökérkönyvtárában található összes mappáról, a grafikával (sávokkal) és a számszerű ábrázolással együtt a méretük százalékában.
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"}'
Példa:
Sorolja fel a fájltípusok összefoglalását a Directory-ban
Mutasson egy könyvtárban található fájltípusok listáját, a hozzá tartozó fájlok számával együtt.
find . -type f | awk -F'.' '{print $NF}' | sort| uniq -c | sort -g
Példa:
Az awk parancsot használó parancssori példák remélem, hogy nagyon hasznosnak találják. És használják őket közvetlenül a konzolról vagy közvetett módon egy szkriptbe történő beillesztéssel (automatizált feladat).
A Shell Scripting következő bejegyzésében további parancsokat fogunk felfedezni.
Ha szeretne többet megtudni a "grep" parancsról, látogassa meg ezt a linket "DEBIAN Wiki”És ha többet szeretne megtudni a Shell Scriptingről a saját blogunkban, ide kattintva megnézheti a témával kapcsolatos egyéb kiadványainkat: Szkriptelés DesdeLinux
Csak az első példát értettem, semmi mást 🙁