Awk ist eine Anwendung zur Verarbeitung von Textdateien und fast alle Linux-Systeme verfügen über dieses Programm. Es verarbeitet nacheinander jede Zeile der Datei und liest jedes Feld darin. Für Textdateien wie Protokolle und CSV, bei denen jede Zeile das gleiche Format hat, ist awk möglicherweise das bequemste Tool. Awk ist nicht nur eine Tool-Software, sondern auch eine Programmiersprache. Dieser Artikel stellt jedoch nur die Verwendung über die Befehlszeile vor, was für die meisten Fälle ausreichend sein sollte. 1. Grundlegende Verwendung Die grundlegende Verwendung von awk erfolgt in der folgenden Form. # Format $awk Aktionsdateiname # Beispiel $awk '{print $0}' demo.txt Im obigen Beispiel ist demo.txt die von awk zu verarbeitende Textdatei. Innerhalb der einfachen Anführungszeichen steht eine geschweifte Klammer, welche die Verarbeitungsaktion „print $0“ für jede Zeile enthält. Unter diesen ist „print“ der Druckbefehl und $0 stellt die aktuelle Zeile dar. Das Ausführungsergebnis des obigen Befehls besteht also darin, jede Zeile so auszudrucken, wie sie ist. Als Nächstes verwenden wir die Standardeingabe (stdin), um das obige Beispiel zu demonstrieren. $ echo 'das ist ein Test' | awk '{print $0}' Dies ist ein Test Im obigen Code dient print $0 zum erneuten Ausdrucken der Standardeingabe. Dies ist ein Test. Awk unterteilt jede Zeile entsprechend den Leerzeichen und Tabulatoren in mehrere Felder und verwendet dabei $1, $2, $3, um das erste, das zweite und das dritte Feld usw. darzustellen. $ echo 'das ist ein Test' | awk '{print $3}' A Im obigen Code stellt $3 das dritte Feld dar, dies ist ein Test. Nachfolgend speichern wir beispielsweise die Datei /etc/passwd als demo.txt. root:x:0:0:root:/root:/usr/bin/zsh daemon:x:1:1:daemon:/usr/sbin:/usr/sbin/nologin bin:x:2:2:bin:/bin:/usr/sbin/nologin sys:x:3:3:sys:/dev:/usr/sbin/nologin sync:x:4:65534:sync:/bin:/bin/sync Das Feldtrennzeichen dieser Datei ist ein Doppelpunkt (:), daher müssen Sie den Parameter -F verwenden, um das Trennzeichen als Doppelpunkt anzugeben. Dann kann sein erstes Feld extrahiert werden. $ awk -F ':' '{ print $1 }' demo.txt Wurzel Daemon bin System synchronisieren Grammatik
Variablen Zusätzlich zu $ + Zahl zur Darstellung eines Felds bietet awk auch einige andere Variablen. Die Variable NF gibt an, wie viele Felder in der aktuellen Zeile vorhanden sind, sodass $NF das letzte Feld darstellt. $ echo 'das ist ein Test' | awk '{print $NF}' prüfen $(NF-1) stellt das vorletzte Feld dar. $ awk -F ':' '{print $1, $(NF-1)}' demo.txt Wurzel /Wurzel daemon /usr/sbin bin /bin sys /dev synchronisieren /bin Im obigen Code gibt das Komma im Druckbefehl an, dass bei der Ausgabe ein Leerzeichen zum Trennen der beiden Teile verwendet wird. $ awk -F ':' '{print NR ") " $1}' demo.txt 1) Wurzel Wenn Sie im obigen Code im Druckbefehl die Zeichen unverändert ausgeben möchten, müssen Sie sie in Anführungszeichen setzen. Andere integrierte Variablen von awk sind wie folgt. DATEINAME: Aktueller Dateiname 3. Funktion Awk bietet auch einige integrierte Funktionen, um die Verarbeitung von Rohdaten zu erleichtern. Die Funktion toupper() dient zum Umwandeln von Zeichen in Großbuchstaben. $ awk -F ':' '{ drucke toupper($1) }' demo.txt WURZEL DÄMON BIN SYS SYNCHRONISATION Im obigen Code wird das erste Feld bei der Ausgabe in Großbuchstaben umgewandelt. Andere häufig verwendete Funktionen sind wie folgt. tolower(): Zeichen in Kleinbuchstaben umwandeln. Eine vollständige Liste der integrierten Funktionen von awk finden Sie auf der Manualpage. IV. Bedingungen Mit Awk können Sie Ausgabebedingungen angeben und nur Zeilen ausgeben, die diese Bedingungen erfüllen. Die Ausgabebedingung sollte vor der Aktion geschrieben werden. $ awk 'bedingte Aktion' Dateiname Bitte sehen Sie sich das Beispiel unten an. $ awk -F ':' '/usr/ {print $1}' demo.txt Wurzel Daemon bin System Im obigen Code ist dem Druckbefehl ein regulärer Ausdruck vorangestellt, der nur die Zeilen ausgibt, die usr enthalten. Das folgende Beispiel gibt nur die Zeilen mit ungeraden Nummern und nur die Zeilen nach der dritten Zeile aus. # Ungerade Zeilen ausgeben $ awk -F ':' 'NR % 2 == 1 {print $1}' demo.txt Wurzel bin synchronisieren # Dritte und alle weiteren Zeilen ausgeben $ awk -F ':' 'NR >3 {print $1}' demo.txt System synchronisieren Das folgende Beispiel gibt die Zeile aus, deren erstes Feld dem angegebenen Wert entspricht. $ awk -F ':' '$1 == "root" {print $1}' demo.txt Wurzel $ awk -F ':' '$1 == "root" || $1 == "bin" {print $1}' demo.txt Wurzel bin 5. if-Anweisung Awk bietet die if-Struktur zum Schreiben komplexer Bedingungen. $ awk -F ':' '{if ($1 > "m") print $1}' demo.txt Wurzel System synchronisieren Der obige Code gibt die Zeilen aus, in denen das erste Zeichen des ersten Felds größer als m ist. Die if-Struktur kann auch einen else-Teil angeben. $ awk -F ':' '{wenn ($1 > "m") drucke $1; sonst drucke "---"}' demo.txt Wurzel --- --- System synchronisieren 6. Referenzlinks Ein Awk-Tutorial anhand von Beispielen, Greg Grothaus 30 Beispiele für Awk-Befehle in der Textverarbeitung, Mokhtar Ebrahim Zusammenfassen Das Obige ist das vom Herausgeber vorgestellte Einführungstutorial zu Linx awk. Ich hoffe, es wird für alle hilfreich sein. Wenn Sie Fragen haben, hinterlassen Sie mir bitte eine Nachricht und der Herausgeber wird Ihnen rechtzeitig antworten. Ich möchte auch allen für ihre Unterstützung der Website 123WORDPRESS.COM danken! Das könnte Sie auch interessieren:
|
<<: JS implementiert einen Stoppuhr-Timer
>>: JS realisiert die Berechnung des Gesamtpreises der Waren im Warenkorb
Problembeschreibung: Die Netzwerkkartendatei /etc...
React-Lebenszyklus Zwei Bilder zum besseren Verst...
1. Laden Sie den MySQL-JDBC-Treiber (mysql-connec...
Dieser Artikel beschreibt, wie lamp-php7.0 in ein...
Inhaltsverzeichnis Vorwort 1. Was ist Selen? 2. N...
Hintergrund Da ich einem neuen Projektteam zugewi...
MySQL Installer bietet eine benutzerfreundliche, ...
Dieser Artikel stellt hauptsächlich ein Beispiel ...
Im Vergleich zum alten Lebenszyklus Drei Hooks we...
Linux-Bibliothek generieren Die Linux-Version ver...
CentOS 8 hat das Installationsprogramm für Softwa...
Die Verwendung von H-Tags, insbesondere h1, war sc...
Erste Methode Alibaba Cloud- und Baidu Cloud-Serv...
Inhaltsverzeichnis Umfeld Zusammenfassung Modul F...
Inhaltsverzeichnis 2. Komma-Operator 3. JavaScrip...