Awk: Nauka skryptów powłoki za pomocą polecenia awk Terminal
Polecenie „awk” w Wolnych systemach operacyjnych typu GNU / Linux jest bardzo potężnym poleceniem, które pomaga nam mieć większą kontrolę podczas przetwarzania danych pochodzących z innych poleceń lub poleceń. Nazwa AWK pochodzi od inicjałów nazwisk jej autorów: Alfred Aho, peter Weinberger i Brian Kernighana.
To polecenie udostępnia język skryptowy do przetwarzania tekstu, za pomocą którego możemy: Definiować zmienne, używać ciągów znaków i operatorów arytmetycznych, używać sterowania przepływem i cykli oraz generować sformatowane raporty. W rzeczywistości Awk to coś więcej niż polecenie przetwarzania wzorców, to cały język analizy semantycznej.
Wprowadzenie do polecenia „awk”
AWK był jednym z pierwszych bardzo popularnych narzędzi konsoli do zarządzania (obsługi / wyodrębniania) danych poprzez maksymalizację funkcjonalności potoków UNIX. Język udostępniany przez to narzędzie jest obecnie standardem w prawie wszystkich nowoczesnych systemach operacyjnych typu UNIX, do tego stopnia, że jest częścią podstawowych specyfikacji systemu UNIX, więc zwykle jest już domyślnie zainstalowany w większości z nich.
Jego najpowszechniejsza składnia to: awk pliki 'program' i gdzie 'program' może być: wzorzec {akcja} wzorzec {akcja}. Polecenie odczytuje dane wejściowe pliku po jednym wierszu na raz. Każdy wiersz jest porównywany z każdym wzorem w kolejności; Dla każdego wzorca pasującego do wiersza wykonywana jest odpowiednia akcja.
Prosty przykład:
awk -F: '$1=="root" {print}' /etc/passwd
pyta o pierwsze pole, jeśli jest to korzeń każdego wiersza w / etc / passwd i wyświetla je, biorąc pod uwagę ":" z -F: jako separator pól.
Praktyczne przykłady
Lista najczęściej używanych poleceń
Zobacz listę opartą na historii terminala Systemu uporządkowaną od najczęściej używanych do najmniej.
history | awk '{a[$2]++}END{for(i in a){print a[i] " " i}}' | sort -rn | head
przykład:

Wykres (tabela) z liczbą połączeń dla każdego hosta
Utwórz tekstowy wykres ASCII przedstawiający całkowitą liczbę połączeń z hosta do każdego adresu IP.
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 "" }'
przykład:

Lista katalogów według rozmiaru
Wydrukuj na ekranie listę katalogów bieżącej ścieżki od największej do najmniejszej, pokazując etykiety odpowiadające ich rozmiarowi za pomocą liter: g, m i 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}'
przykład:

Pokaż ruch z interfejsu sieciowego
Wyświetl w trybie online zużycie danych przychodzących i wychodzących w kilobajtach (kb) dla określonego interfejsu sieciowego.
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
przykład:

Uzyskaj serię liczb Fibonacciego
Utwórz listę liczb X według wzoru Fibonacciego, biorąc pod uwagę 2 liczby podstawowe do skonstruowania.
seq 50| awk 'BEGIN {a=1; b=1} {print a; c=a+b; a=b; b=c}'
przykład:

Graficzne zestawienie struktury plików według rozmiaru
Uzyskaj listę wszystkich folderów w katalogu głównym systemu operacyjnego wraz z grafiką (słupkami) i liczbową reprezentacją jako procent ich rozmiaru w niej.
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"}'
przykład:

Lista podsumowania typów plików w katalogu
Pokaż listę typów plików zawartych w katalogu wraz z liczbą plików, które mu odpowiadają.
find . -type f | awk -F'.' '{print $NF}' | sort| uniq -c | sort -g
przykład:

Te przykłady wierszy poleceń używających polecenia awk Mam nadzieję, że uznasz je za bardzo przydatne. I można ich używać bezpośrednio z konsoli lub pośrednio poprzez wstawienie ich do skryptu (zadanie automatyczne).
W następnym poście o skryptach powłoki omówimy inne polecenia.
Jeśli chcesz dowiedzieć się więcej o poleceniu „grep”, odwiedź ten link ”DEBIAN Wiki”A jeśli chcesz dowiedzieć się więcej o skryptach powłoki na naszym własnym blogumożesz zapoznać się z innymi naszymi publikacjami na ten temat, klikając tutaj: Skrypty w FromLinux
