Detaillierte Erklärung des Linx awk-Einführungstutorials

Detaillierte Erklärung des Linx awk-Einführungstutorials

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

awk [Optionsparameter] 'Skript' var=Wert Datei(en)

oder

awk [Optionsparameter] -f Skriptdatei var=Wert Datei(en)

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.
Die Variable NR gibt an, welche Zeile gerade verarbeitet wird.

$ awk -F ':' '{print NR ") " $1}' demo.txt

1) Wurzel
2) Daemon
3) Mülleimer
4) System
5) synchronisieren

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
FS: Feldtrennzeichen, der Standard ist Leerzeichen und Tabulator.
RS: Zeilentrennzeichen, das zum Trennen der einzelnen Zeilen verwendet wird. Der Standardwert ist Newline.
OFS: Ausgabefeldtrennzeichen, wird zum Trennen von Feldern beim Drucken verwendet, die Standardeinstellung ist ein Leerzeichen.
ORS: Das Ausgabedatensatztrennzeichen, das zum Trennen von Datensätzen beim Drucken verwendet wird. Der Standardwert ist ein Zeilenumbruchzeichen.
OFMT: Das Format der digitalen Ausgabe, der Standard ist %.6g

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.
length(): Gibt die Länge einer Zeichenfolge zurück.
substr(): Gibt eine Teilzeichenfolge zurück.
sin(): Sinus.
cos(): Kosinus.
sqrt(): Quadratwurzel.
rand(): Zufallszahl.

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:
  • Grundlegende Verwendung von Awk-Arrays in Linux
  • Eine kurze Diskussion über die Verwendung von sed- und awk-Befehlen in Linux
  • Detaillierte Erklärung der in AWK integrierten Variablen FS, NF, NR, RT, RS, ORS, OFS in LINUX
  • Detaillierte Erklärung der Verwendung von sed und awk in Linux
  • Ein Shell-Befehl pro Tag. Linux-Reihe von Textinhaltsoperationen - ausführliche Erklärung des awk-Befehls
  • Detaillierte Erklärung des regulären Linux-Ausdrucks awk
  • Detaillierte Beispiele zur Verwendung von regulären Ausdrücken und integrierten Funktionen von awk
  • Reguläre Ausdrücke der Shell: praktische Hinweise zu grep, sed und awk
  • Markow-Ketten-Algorithmus (Markow-Algorithmus) awk, C++, Implementierungscode für die Sprache C
  • Awk-Befehl, ausführliche Einführung und Beispiele in die Programmiersprache Awk
  • Linux-AWK-Beispiel zum Trennen einer Spalte einer Datei durch Kommas

<<:  JS implementiert einen Stoppuhr-Timer

>>:  JS realisiert die Berechnung des Gesamtpreises der Waren im Warenkorb

Artikel empfehlen

Interviewer stellen häufig Fragen zum Lebenszyklus von React

React-Lebenszyklus Zwei Bilder zum besseren Verst...

Jmeter stellt eine Verbindung zum Datenbankprozessdiagramm her

1. Laden Sie den MySQL-JDBC-Treiber (mysql-connec...

Tutorial zur Installation von lamp-php7.0 in einer Centos7.4-Umgebung

Dieser Artikel beschreibt, wie lamp-php7.0 in ein...

Einführung in die Bereitstellung des Selenium-Crawler-Programms unter Linux

Inhaltsverzeichnis Vorwort 1. Was ist Selen? 2. N...

JavaScript zur Implementierung eines einfachen Web-Rechners

Hintergrund Da ich einem neuen Projektteam zugewi...

So verwenden Sie die Glog-Protokollbibliothek in einer Linux-Umgebung

Linux-Bibliothek generieren Die Linux-Version ver...

So konfigurieren Sie inländische Quellen in CentOS8 yum/dnf

CentOS 8 hat das Installationsprogramm für Softwa...

Verwendung des HTML-H-Titel-Tags

Die Verwendung von H-Tags, insbesondere h1, war sc...

Zwei Möglichkeiten zur Installation von Python3 auf Linux-Servern

Erste Methode Alibaba Cloud- und Baidu Cloud-Serv...

Zusammenfassung ungewöhnlicher JS-Operationsoperatoren

Inhaltsverzeichnis 2. Komma-Operator 3. JavaScrip...