Awk: Lernen von Shell-Skripten mit dem Befehl awk Terminal

Awk: Lernen von Shell-Skripten mit dem Befehl awk Terminal

Awk: Lernen von Shell-Skripten mit dem Befehl awk Terminal

Der Befehl "awk" in freien Betriebssystemen vom Typ GNU / Linux ist ein sehr leistungsfähiger Befehl, der uns hilft, die Verarbeitung von Daten aus anderen Befehlen oder Befehlsbefehlen besser zu steuern. Der Name AWK leitet sich von den Initialen der Nachnamen seiner Autoren ab: Alfred Aho, peter WEinberger und Brian KErnighan.

Dieser Befehl bietet eine Skriptsprache für die Textverarbeitung, mit der wir: Variablen definieren, Zeichenfolgen und arithmetische Operatoren verwenden, Flusssteuerung und Zyklen verwenden und formatierte Berichte erstellen können. Awk ist eigentlich mehr als nur ein Musterverarbeitungsbefehl, es ist eine ganze semantische Analysesprache.

Einführung in den Befehl "awk"

AWK war eines der ersten sehr beliebten Konsolendienstprogramme zum Verwalten (Behandeln / Extrahieren) von Daten durch Maximierung der Funktionalität von UNIX-Pipelines. Die von diesem Dienstprogramm bereitgestellte Sprache ist derzeit ein Standard in fast allen modernen UNIX-Betriebssystemen, so dass sie Teil der grundlegenden UNIX-Spezifikationen ist und daher in den meisten von ihnen normalerweise standardmäßig installiert ist.

Die gebräuchlichste Syntax lautet: awk 'Programm'-Dateien und wo' Programm 'sein kann: pattern {action} pattern {action}. Der Befehl liest die Dateieingabe zeilenweise. Jede Zeile wird der Reihe nach mit jedem Muster verglichen. Für jedes Muster, das der Zeile entspricht, wird die entsprechende Aktion ausgeführt.

Ein einfaches Beispiel wie:

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

Es fragt nach dem ersten Feld, ob es die Wurzel jeder Zeile in / etc / passwd ist, und druckt es unter Berücksichtigung des ":" mit -F: als Feldtrennzeichen.

Einführungsbeispiel Awk

Praktische Beispiele

Liste der am häufigsten verwendeten Befehle

Zeigen Sie eine Liste an, die auf dem Verlauf des Systemterminals basiert und von den am häufigsten verwendeten bis zu den am wenigsten verwendeten geordnet ist.

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

Beispiel:

Beispiel 1: Awk-Befehl

Grafik (Tabelle) mit der Anzahl der Verbindungen für jeden Host

Erstellen Sie ein textbasiertes ASCII-Diagramm, das die Gesamtzahl der Verbindungen vom Host zu jeder IP-Adresse anzeigt.

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

Beispiel:

Beispiel 2: Awk-Befehl

Liste der Verzeichnisse nach Größe

Drucken Sie auf dem Bildschirm die Liste der Verzeichnisse des aktuellen Pfads vom größten zum kleinsten mit den Buchstaben, die ihrer Größe entsprechen, mit den Buchstaben g, m und 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}'

Beispiel:

Beispiel 3: Awk-Befehl

Verkehr von einer Netzwerkschnittstelle anzeigen

Anzeigen des eingehenden und ausgehenden Datenverbrauchs online in Kilobyte (kb) für eine bestimmte Netzwerkschnittstelle.

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

Beispiel:

Erhalten Sie eine Fibonacci-Zahlenreihe

Erstellen Sie eine Liste mit X Mengenzahlen nach einem Fibonacci-Muster mit 2 zu konstruierenden Basisnummern.

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

Beispiel:

Beispiel 5: Awk-Befehl

Grafische Auflistung der Dateistruktur nach Größe

Erhalten Sie eine Liste aller Ordner im Stammverzeichnis des Betriebssystems zusammen mit der Grafik (Balken) und der numerischen Darstellung als Prozentsatz ihrer Größe.

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

Beispiel:

Beispiel 6: Awk-Befehl

Listen Sie eine Zusammenfassung der Dateitypen in einem Verzeichnis auf

Zeigen Sie eine Liste der in einem Verzeichnis enthaltenen Dateitypen zusammen mit der Anzahl der entsprechenden Dateien an.

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

Beispiel:

Beispiel 8: Awk-Befehl

Diese Beispiele für Befehlszeilen mit dem Befehl awk Ich hoffe, Sie finden es sehr nützlich. Und sie können verwendet werden, um direkt von der Konsole oder indirekt durch Einfügen in ein Skript (automatisierte Aufgabe) verwendet zu werden.

Im nächsten Beitrag zu Shell Scripting werden wir andere Befehle untersuchen.

Wenn Sie mehr über den Befehl "grep" erfahren möchten, besuchen Sie diesen Link. "DEBIAN WikiUnd wenn Sie mehr über Shell Scripting in unserem eigenen Blog erfahren möchtenKlicken Sie hier, um einen Blick auf unsere anderen Veröffentlichungen zu diesem Thema zu werfen: Skripterstellung in FromLinux