Dieser Artikel führt Sie durch einige interessante AWK -Befehle und wann Sie sie verwenden müssen. Lesen Sie weiter, um es herauszufinden! Einführung in awk
Awk ist eine populäre Sprache in Unix und Linux. Es hat seinen Namen von seinen Autoren erhalten: Alfred Aho, Peter Weinberger und Brian Kernighan. Der Befehl awk ermöglicht den Zugriff auf die awk -Programmiersprache, mit der Daten in Textströmen verarbeitet werden sollen.
AWK wird im Volksmund zum Scannen von Mustern und zur Vereinfachung komplexer Vorgänge verwendet und hilft Ihnen, effektive Anweisungen zum Definieren von Textmustern in einer Datei zu schreiben. Der Befehl awk verarbeitet dann diese Aussagen, indem er jeweils eine Zeile liest und eine Aktion basierend auf der angegebenen Bedingung ergreift.
Einfach ausgedrückt, awk findet und ersetzt Text und hilft dabei, die angegebenen Daten zu sortieren, zu validieren oder zu indizieren.
Merkmale von awk
Awk wird mit vielen einzigartigen Funktionen geliefert:
- In awk ist keine Zusammenstellung erforderlich
- Häufig für die Datenextraktion verwendet
- Häufig zur Durchführung von Textmanipulation verwendet
- Hilft bei Bedarf Ergebnisse zu erzielen.
Erforschen wir nun die Kraft der awk -Befehle.
15 interessante awk -Befehle
Hier ist eine kompilierte Liste einiger interessanter AWK -Befehle:
- Drucken von Zufallszahlen in einem Satz drucken - Angenommen, Sie möchten ein paar Zufallszahlen aus einem ausgewählten Pool ausdrucken. Sie können die Menge an Zufallszahlen aus diesem Pool angeben und awk bitten, dies zu drucken. Hier ist ein Beispiel: Drucken wir 10 Nummern von 0 bis 1000. Der Befehl awk dafür ist also wie folgt: awk 'begin für (i = 1; i i <= 10; i++)
Druck int (1001 * Rand ()) '
- Suche nach Foo oder Bar - Was ist, wenn Sie eine Zeile schreiben möchten, in der Sie eine einfache Suche nach Foo oder Bar durchführen möchten?? Hier ist ein Befehl, mit dem Sie genau das tun können: if (/foo/||/bar/)
Druck "gefunden!"
- Ein Feld neu anordnen - Wenn Sie ein bestimmtes Feld in einer bestimmten Reihenfolge ausdrucken möchten, kann AWK dies für Sie tun. Angenommen, Sie möchten die ersten 5 Felder eines bestimmten Sets in einem Feld pro Zeile drucken. Sie können den folgenden Befehl verwenden: awk 'i = 1
während ich <= 3)
drucken $ i
ich++
' Eingabedatei
- Eine Linie teilen - In einer bestimmten Reihe von Dateien kann awk eine Zeile in Felder aufteilt, wobei X der Name des Feldes ist: $ awk 'print $ x, $ x' xyz.txt
- Ausführen mehrerer Befehle gleichzeitig - Um mehrere Befehle gleichzeitig auszuführen, können Sie ein Semikolon verwenden, um beide Befehle anzugeben: $ echo "Guten Morgen! Jack "| awk '$ 2 =" jill "; drucken $ 0'
- Ausführung eines awk -Skripts - Wenn Sie ein awk -Skript aus einer bestimmten Datei ausführen möchten, können Sie eine Datei sum_column erstellen und das folgende Skript in dieser Datei einfügen: #!/usr/bin/awk -f
Begin sum = 0
sum = sum+$ x
Ende Drucksumme Im obigen Skript entspricht X der Spalte, die Sie in der Datei eingeben müssen. Nach dem erfolgreichen Abschluss dieser Aufgabe können Sie den folgenden Befehl verwenden, um die Summe der X -Spalte in der Eingabedatei anzuzeigen:
awk -f sum_column input_file.
- Verwenden von -f - Bei der Codierung kann es oft unpraktisch erscheinen, sich auf das Terminal zu beziehen. awk verwendet -f, um die Suche aus einer Datei auszuführen: awk -f -Skript.awk InputFile
- Mathematikfunktionen ausführen - Sie können awk auch für einfache mathematische Funktionen verwenden: awk 'sum = $ 2 + $ 3 + $ 4; avg = sum / 3
> Drucken Sie $ 1, avg 'Noten
- Hallo Welt in awk - Sie können eine einfache Hello -Welt in awk über den folgenden Befehl ausdrucken: awk "begin print" Hello World!!""
Sie können auch ein Hello World -Programm erstellen. Der folgende Code druckt nicht nur die allgegenwärtige Hallo -Nachricht, sondern generiert auch Header -Informationen:
$ awk 'begin print "Hallo Welt!" '
- Drucken der Gesamtzahl der Bytes - Sie können die gesamten Bytes finden, die von Dateien mit dem folgenden Befehl verwendet werden: LS -l . | awk 'x += $ 5; ENDE \
Druck "Gesamt Bytes:" x '
Gesamt Bytes: 7449362
- Anonymisieren eines Apache -Protokolls - Sie können den folgenden Code verwenden, um ein Apache-Protokoll anonymisieren: Cat Apache-Anon-Noadmin.Protokoll | \
awk 'Funktion ri (n) \
return int (n*rand ()); \
Begin srand (); Wenn (! \
($ 5 in Jack)) \
Jack [$ 5] = Sprintf ("%d.%D.%D.%D", \
Ri (255), Ri (255) \
, Ri (255), Ri (255)); \
$ 5 = Jack [$ 5]; Druck __g5_token5b610ba53dbe4 '
- In Reihen arbeiten - Wenn Sie eine Adresse haben, die Sie in Zeilen sortieren möchten, können Sie dies mit dem folgenden Befehl tun: begin rs = ""; Fs = "\ n"
Druck "Name ist:", $ 1
Druck "Adresse ist:", $ 2
Druck "Stadt und Staat sind:", $ 3
drucken ""
- Verwenden Sie die while -Schleife - Die while -Schleife führt die Handlung in einem wiederholten Vorgang weiter aus, bis die Bedingung wahr ist. Zum Beispiel können Sie für Drucknummern von 1 bis 100 den folgenden Code verwenden: awk 'begin i = 1; während ich < 100) print i; ++i '
- Verwenden der Do-while-Schleife - In dieser Schleife wird die Bedingung am Ende der Schleife auch dann ausgeführt, wenn die Anweisung falsch ist. Zum Beispiel können Sie den folgenden Code verwenden, um Nummern von 1 bis 100 mit einer Do-While-Schleife zu drucken: awk 'begin i = 1; do print i; ++ i während (ich < 100) '
- Verwenden Sie Beginn und Ende - Mit dem Schlüsselwort mit Beginn wird ein Header für die Verarbeitung Ihres Datensatzes erstellt: $ awk 'begin print "xxx"
Auf die gleiche Weise wird das Schlüsselwort des Endes nach der Verarbeitung der Daten verwendet:
End Print "Dateifose" '
Damit schließt sich die Liste der 15 interessanten awk -Befehle ab. Sie können diese ausprobieren und die Ergebnisse sehen. Ich hoffe, Sie finden es nützlich. Wenn Sie diesen Artikel interessant fanden, können Sie das Mastering -Linux -Shell -Skripting - Second Edition untersuchen. In diesem Buch werden Sie alles entdecken, was Sie wissen müssen, um Shell -Skripte zu beherrschen und fundierte Entscheidungen über die Elemente zu treffen, die Sie verwenden.