GNU/Linux >> LINUX-Kenntnisse >  >> Linux

Der Linux-AWK-Befehl – ​​Syntaxbeispiele für Linux und Unix

In dieser anfängerfreundlichen Anleitung lernen Sie die Grundlagen des awk kennen Befehl. Sie werden auch einige Möglichkeiten sehen, wie Sie es beim Umgang mit Text verwenden können.

Fangen wir an!

Was ist das awk Befehl?

awk ist eine Skriptsprache und ist hilfreich, wenn Sie in der Befehlszeile arbeiten. Es ist auch ein weit verbreiteter Befehl zur Textverarbeitung.

Bei Verwendung von awk , können Sie Daten – einen oder mehrere individuelle Texte – basierend auf einem von Ihnen bereitgestellten Muster auswählen.

Zum Beispiel einige der Operationen, die Sie mit awk ausführen können nach einem bestimmten Wort oder Muster in einem gegebenen Textstück suchen oder sogar eine bestimmte Zeile oder eine bestimmte Spalte in einer von Ihnen bereitgestellten Datei auswählen.

Die grundlegende Syntax von awk Befehl

In seiner einfachsten Form ist das awk Auf den Befehl folgt eine Reihe einfacher Anführungszeichen und eine Reihe geschweifter Klammern, wobei der Name der Datei, die Sie durchsuchen möchten, zuletzt erwähnt wird.

Es sieht in etwa so aus:

awk '{action}' your_file_name.txt

Wenn Sie nach Text suchen möchten, der ein bestimmtes Muster hat, oder Sie nach einem bestimmten Wort im Text suchen, sieht der Befehl etwa so aus:

awk '/regex pattern/{action}' your_file_name.txt

So erstellen Sie eine Beispieldatei

Um eine Datei in der Kommandozeile zu erstellen, verwenden Sie den touch Befehl.
Zum Beispiel:touch filename.txt wobei filename , ist der Name Ihrer Datei.

Sie können dann den open verwenden Befehl (open filename.txt ), und ein Textverarbeitungsprogramm wie TextEdit wird geöffnet, in dem Sie den Inhalt der Datei hinzufügen können.

Angenommen, Sie haben eine Textdatei, information.txt , das Daten enthält, die in verschiedene Spalten unterteilt sind.

Der Dateiinhalt könnte etwa so aussehen:

fristName       lastName        age     city       ID

Thomas          Shelby          30      Rio        400
Omega           Night           45      Ontario    600
Wood            Tinker          54      Lisbon     N/A
Giorgos         Georgiou        35      London     300
Timmy           Turner          32      Berlin     N/A

In meinem Beispiel gibt es eine Spalte für firstName , lastName , age , city , und ID .

Sie können sich jederzeit die Ausgabe des Inhalts Ihrer Datei ansehen, indem Sie cat text_file eingeben , wobei text_file ist der Name Ihrer Datei.

So drucken Sie den gesamten Inhalt der Datei mit awk

Um alle zu drucken den Inhalt einer Datei, die Aktion, die Sie innerhalb der geschweiften Klammern angeben, ist print $0 .

Dies funktioniert genauso wie cat zuvor erwähnten Befehl.

awk '{print $0}' information.txt

Ausgabe:

fristName       lastName        age     city       ID

Thomas          Shelby          30      Rio        400
Omega           Night           45      Ontario    600
Wood            Tinker          54      Lisbon     N/A
Giorgos         Georgiou        35      London     300
Timmy           Turner          32      Berlin     N/A

Wenn Sie möchten, dass jede Zeile eine Zeilennummer hat, würden Sie den NR verwenden eingebaute Variable:

awk '{print NR,$0}' information.txt 
1 fristName     lastName        age     city       ID
2 
3 Thomas        Shelby          30      Rio        400
4 Omega         Night           45      Ontario    600
5 Wood          Tinker          54      Lisbon     N/A
6 Giorgos       Georgiou        35      London     300
7 Timmy         Turner          32      Berlin     N/A

So drucken Sie bestimmte Spalten mit awk

Bei Verwendung von awk , können Sie bestimmte Spalten angeben, die gedruckt werden sollen.

Um die erste Spalte drucken zu lassen, verwenden Sie den Befehl:

awk '{print $1}' information.txt

Ausgabe:

Thomas
Omega
Wood
Giorgos
Timmy

Der $1 steht für das erste Feld, in diesem Fall die erste Spalte.

Um die zweite Spalte zu drucken, würden Sie $2 verwenden :

awk '{print $2}' information.txt

Ausgabe:

lastName

Shelby
Night
Tinker
Georgiou
Turner

Der Weg awk legt fest, wo jede Spalte beginnt und endet, ist standardmäßig ein Leerzeichen.

Um mehr als eine Spalte zu drucken, zum Beispiel die erste und vierte Spalte, würden Sie Folgendes tun:

awk '{print $1, $4}' information.txt

Ausgabe:

fristName city
 
Thomas    Rio
Omega     Ontario
Wood      Lisbon
Giorgos   London
Timmy     Berlin

Der $1 steht für das erste Eingabefeld (erste Spalte) und den $4 stellt das vierte dar. Sie trennen sie mit einem Komma, $1,$4 , sodass die Ausgabe ein Leerzeichen hat und besser lesbar ist.

Um das letzte Feld (die letzte Spalte) zu drucken, können Sie auch $NF verwenden was das letzte darstellt Feld in einem Datensatz:

awk '{print $NF}' information.txt 

Ausgabe:

ID

400
600
N/A
300
N/A

So drucken Sie bestimmte Zeilen einer Spalte

Sie können auch die Zeile angeben, die Sie aus Ihrer gewählten Spalte drucken möchten:

awk '{print $1}' information.txt | head -1 

Ausgabe:

FirstName

Lassen Sie uns diesen Befehl aufschlüsseln. awk '{print $1}' information.txt druckt die erste Spalte. Dann wird die Ausgabe dieses Befehls (die Sie zuvor gesehen haben) piped , indem Sie das Pipe-Symbol | verwenden , zum Head-Befehl, wo sein -1 Argument wählt die erste Zeile der Spalte aus.

Wenn Sie möchten, dass zwei Zeilen gedruckt werden, würden Sie Folgendes tun:

awk '{print $1}' information.txt | head -2 

Ausgabe:

FirstName
Dionysia

Wie man Linien mit einem bestimmten Muster in awk ausdruckt

Sie können eine Zeile drucken, die beginnt mit einem bestimmten Buchstaben.

Zum Beispiel:

awk '/^O/' information.txt

Ausgabe:

Omega           Night           45      Ontario    600

Dieser Befehl wählt jede Zeile mit Text aus, die beginnt mit einem O .

Sie verwenden das Aufwärtspfeilsymbol (^ ) zuerst, was den Beginn einer Zeile angibt, und dann den Buchstaben, mit dem eine Zeile beginnen soll.

Sie können auch eine Zeile drucken, die endet in einem bestimmten Muster:

awk '/0$/' information.txt 

Ausgabe:

Thomas          Shelby          30      Rio        400
Omega           Night           45      Ontario    600
Giorgos         Georgiou        35      London     300

Dies gibt die Zeilen aus, die auf 0 enden – das $ Symbol wird nach einem Zeichen verwendet, um anzugeben, wie eine Zeile endet.

Dieser Befehl könnte auch geändert werden in:

awk '! /0$/' information.txt 

Der ! wird als NOT verwendet , also werden in diesem Fall die Zeilen ausgewählt, die NICHT mit 0 enden .

fristName       lastName        age     city       ID

Wood            Tinker          54      Lisbon     N/A
Timmy           Turner          32      Berlin     N/A

Wie man reguläre Ausdrücke in awk verwendet

Um Wörter auszugeben, die bestimmte Buchstaben enthalten, und Wörter auszudrucken, die einem von Ihnen festgelegten Muster entsprechen, verwenden Sie wieder die Schrägstriche // , zuvor gezeigt.

Wenn Sie nach Wörtern suchen möchten, die on enthalten , würden Sie Folgendes tun:

awk ' /io/{print $0}' information.txt 

Ausgabe:

Thomas          Shelby          30      Rio        400
Omega           Night           45      Ontario    600
Giorgos         Georgiou        35      London     300

Dies stimmt mit allen Einträgen überein, die io enthalten .

Angenommen, Sie hätten eine zusätzliche Spalte – eine department Spalte:

fristName       lastName        age     city       ID   department

Thomas          Shelby          30      Rio        400  IT
Omega           Night           45      Ontario    600  Design
Wood            Tinker          54      Lisbon     N/A  IT
Giorgos         Georgiou        35      London     300  Data
Timmy           Turner          32      Berlin     N/A  Engineering

Um alle Informationen von Personen zu finden, die in der IT arbeiten , müssten Sie die Zeichenfolge, nach der Sie suchen, zwischen den Schrägstrichen angeben, // :

awk '/IT/' information.txt 

Ausgabe:

Thomas          Shelby          30      Rio        400  IT
Wood            Tinker          54      Lisbon     N/A  IT

Was wäre, wenn Sie nur die Vor- und Nachnamen der Personen sehen möchten, die in der IT arbeiten? ?

Sie können die Spalte wie folgt angeben:

awk '/IT/{print $1, $2}' information.txt 

Ausgabe:

Thomas Shelby
Wood   Tinker

Dadurch werden nur die erste und zweite Spalte angezeigt, in denen IT angezeigt, anstatt alle Felder anzuzeigen.

Bei der Suche nach Wörtern mit einem bestimmten Muster kann es vorkommen, dass Sie ein Escape-Zeichen wie dieses verwenden müssen:

awk '/N\/A$/' information.txt 

Ausgabe:

Wood            Tinker          54      Lisbon     N/A
Timmy           Turner          32      Berlin     N/A

Ich wollte Zeilen finden, die mit dem Muster N/A enden .

Also, bei der Suche zwischen den ' // ' wie bisher gezeigt, musste ich ein Escape-Zeichen verwenden (\ ) zwischen N/A , sonst hätte ich einen Fehler bekommen.

Verwendung von Vergleichsoperatoren in awk

Wenn Sie beispielsweise alle Informationen von Mitarbeitern finden möchten, die jünger als 40 waren , würden Sie den < verwenden Vergleichsoperator wie folgt:

awk '$3 <  40 { print $0 }' information.txt

Ausgabe:

Thomas          Shelby          30      Rio        400
Giorgos         Georgiou        35      London     300
Timmy           Turner          32      Berlin     N/A

Die Ausgabe zeigt nur die Informationen von Personen unter 40.

Schlussfolgerung

Und da haben Sie es! Sie kennen jetzt die absoluten Grundlagen, um mit awk zu arbeiten und Textdaten manipulieren.

Um mehr über Linux zu erfahren, bietet freeCodeCamp eine große Auswahl an Lernmaterialien.

Hier sind ein paar davon für den Anfang:

  • Linux-Grundlagen – Praktischer Workshop
  • Linux für ethische Hacker (Kali-Linux-Tutorial)
  • Das Linux-Befehlshandbuch

Danke fürs Lesen und viel Spaß beim Lernen 😊


Linux
  1. Linux-Cat-Befehl:Verwendung und Beispiele

  2. Der Linux-Sed-Befehl:Verwendung und Beispiele

  3. Verwenden des Linux-Suchbefehls – Verwendung mit Beispielen

  4. UNIX / Linux:10 Netstat-Befehlsbeispiele

  5. 10 Xargs-Befehlsbeispiele in Linux / UNIX

Linux-awk-Befehl mit 10 Beispielen

Befehlsoptionen und Beispiele für den Tee-Befehl in Linux

50 einfacher und nützlicher Linux-Cut-Befehl in Unix mit Beispielen

Die 50 praktischen Beispiele des SED-Befehls in Linux

Wesentliche Beispiele des ps-Befehls in Linux

AWK-Befehl unter Linux/Unix