Articles

awk scripting erklärt mit praktischen Beispielen

Posted on

Der Awk-Befehl / das Awk-Tool wird verwendet, um Textzeilen und -spalten in einer Datei zu manipulieren. Awk verfügt über eingebaute String-Funktionen und assoziative Arrays. Awk unterstützt die meisten Operatoren und bedingten Blöcke, die in der Sprache C verfügbar sind. awk scripting

awk scripting

Eines der guten Dinge ist, dass wir den awk-Befehl zusammen mit anderen Befehlen verwenden können, um die gewünschte Ausgabe zu erreichen. Wir können auch awk-Skripte in Perl konvertieren.

Grundlegende Systax von awk: ‚BEGIN {start_action} {action} END {stop_action}‘ file_name

Hier sind die Aktionen

  • Begin-Block wird vor der Datei ausgeführt
  • End-Block wird nach der Verarbeitung der Datei ausgeführt
  • Rest der Aktionen wird während der Verarbeitung der Datei ausgeführt

Beispiele: Erstellen Sie eine Datei mit dem Namen test, in der folgende Daten enthalten sind

# cat test

Aus den obigen Daten können Sie ersehen, dass die Datei Zeilen und Spalten hat, die durch Leerzeichen getrennt sind, und die Zeilen sind neue Zeilen. Um diesen Artikel zu erklären, werden wir für ein paar Beispiele eine Testdatei verwenden.

Befehlssyntax: awk ‚{print $3}‘ test

Hier hat $3 die Bedeutung, die dritte Spalte aus allen Spalten der Testdatei zu drucken. Wenn Sie mehrere Spalten drucken möchten, erwähnen Sie die Spaltennamen durch Komma getrennt $1,$2,$3….. unten ist die Ausgabe, die als 3. Spalte in allen Zeilen

# awk '{ print $3 }' testroot# awk '{ print $1,$3,$6 }' test-rw-r--r--. root Apr

Um die 4. und 6. Spalte in einer Datei zu drucken, verwenden Sie awk ‚{print $4,$6}‘ test

Hier werden die Anfangs- und Endblöcke in awk nicht verwendet. Der print-Befehl wird also für jede Zeile, die er aus der Datei liest, ausgeführt. Im nächsten Beispiel werden wir sehen, wie man begin- und end-Blöcke verwendet.

Summe des Spaltenwertes drucken

Befehlssyntax: awk ‚BEGIN {sum=0} {sum=sum+$7} END {print sum}‘ test

Das obige Beispiel druckt die Summe des Wertes in der 7. Spalte. Im begin-Block wird die Variable sum mit dem Wert 0 zugewiesen. Im nächsten Block wird der Wert der 7. Spalte zu der Variablen sum addiert. Dieses Hinzufügen der 7. Spalte zur Variablen sum wiederholt sich für jede verarbeitete Zeile. Wenn alle Zeilen abgearbeitet sind, enthält die Summenvariable die Summe der Werte in der 7. Spalte. Dieser Wert wird im End-Block gedruckt, wie unten gezeigt:

# awk 'BEGIN {sum=0} {sum=sum+$7} END {print sum}' test300

Summe der Spaltenwerte mit awk-Skript

Im zweiten Beispiel haben wir gesehen, wie man den Wert der Spalte 7 summiert, und zwar auf dieselbe Weise, anstatt in einer einzeiligen Anweisung, die wir als Skript schreiben. Erstellen Sie eine Datei sumofcolumn und fügen Sie das folgende Skript in diese Datei ein

#!/usr/bin/awk -fBEGIN {sum=0} {sum=sum+$7} END {print sum}

Nun führen Sie das Skript mit dem awk-Befehl aus, wie unten gezeigt

# awk -f sumofcolumn test300

Damit wird das Skript in der Datei sumofcolumn ausgeführt und die Summe der siebten Spalte im Test angezeigt.

String finden und übereinstimmende Zeile drucken

Befehlssyntax: awk ‚{if($9 == „arkit“) print $0;}‘ test

Das obige Beispiel sucht nach dem String „arkit“ in der dritten Spalte und wenn es eine Übereinstimmung findet, wird die gesamte Zeile gedruckt. Die Ausgabe dieses awk-Befehls ist unten

# awk '{ if($3 == "arkit") print $0;}' test

For-Schleife mit Multiplikation des genannten Wertes, erhöht um +1

Befehlssyntax: awk ‚BEGIN { for(i=1;i<=10;i++) print „Multiplizierter Wert von“, i, „ist“,i*i; }‘

Der obige Befehl wird die Multiplikation der ersten Zahlen von 1 bis 10 ausgeben. Mit i++ wird +1 zur Zahl addiert, so dass sie sich bis 10 weiter erhöht. Die Ausgabe des Befehls ist unten zu sehen

# awk 'BEGIN { for(i=1;i<=10;i++) print "Multiplied value of", i, "is",i*i; }'Multiplied value of 1 is 1

6. Eingabefeld Trennzeichen

Sie haben bereits $0,$1,$2… gesehen, die die gesamte Zeile, erste Spalte, zweite Spalte… ausgeben. Jetzt sehen wir uns andere eingebaute Variablen mit Beispielen an.

In unserer Beispieldatei test haben wir Spalten, die durch ein Leerzeichen getrennt sind, aber anstelle des Leerzeichens können wir auch jedes andere Symbol wie .d.h. : , – zum Trennen und Drucken verwenden.

Beispiel: Wenn Sie : (Doppelpunkt) als Trennzeichen haben, dann verwenden Sie unten

awk ‚BEGIN {FS=“:“} {print $2}‘ test

Oder

awk -F: ‚{print $2}‘ test

Damit wird die Ausgabe wie folgt gedruckt

# awk -F: '{print $2}' test41 file12

OFS – Ausgabefeld-Trennvariable

Standardmäßig werden beim Drucken der Felder mit der print-Anweisung die Felder mit einem Leerzeichen als Trennzeichen angezeigt. Zum Beispiel

Befehlssyntax: awk ‚{print $4,$5}‘ test

# awk '{print $4,$5}' testroot 0

Wir können dieses Standardverhalten mit der OFS-Variable ändern als

Befehlssyntax: awk ‚BEGIN {OFS=“:“} {print $4,$5}‘ test

# awk 'BEGIN {OFS=":"} {print $4,$5}' testroot:0

Hinweis: print $4,$5 und print $4$5 funktionieren nicht auf die gleiche Weise. Die erste gibt die Ausgabe mit Leerzeichen als Begrenzer aus. Die zweite zeigt die Ausgabe ohne Begrenzungszeichen an.

NF – Anzahl der Felder zählen

NF kann verwendet werden, um die Anzahl der Felder in jeder Zeile zu ermitteln

# awk '{print NF}' test9

NR – Anzahl der Datensätze

NR kann verwendet werden, um die Zeilennummer oder die Anzahl der Zeilen in einer Datei zu ermitteln

# awk '{print NR}' test12345678910

Das obige Beispiel wird die Zeilennummer ausgeben, in der Testdatei haben wir zehn Zeilen.

Anzahl der Datensätze in einer bestimmten Datei ausgeben

Wenn Sie das obige Beispiel des 9. Abschnitts sehen, werden alle Zeilennummern ausgegeben, aber die Anforderung ist, dass ich nur die Anzahl der Datensätze sehen möchte.

# awk 'END {print NR}' test10

Dies zeigt die Gesamtanzahl der Zeilen in der Testdatei an.

Stringfunktionen in Awk:

Einige der Stringfunktionen in Awk sind:

  • index(string,search)
  • length(string)
  • split(string,array,separator)
  • substr(string,Position)
  • substr(string,position,max)
  • tolower(string)
  • toupper(string)

Erweiterte Beispiele:

Zeilen filtern mit der Awk-Split-Funktion

Die awk-Split-Funktion zerlegt eine Zeichenkette in ein Array unter Verwendung des Trennzeichens.

Die Syntax der split-Funktion lautet
split(string, array, delimiter)

Nun wollen wir anhand eines Beispiels sehen, wie man mit der split-Funktion die Zeilen filtert.

Die Eingabe „advanced.txt“ enthält die Daten in folgendem Format

# cat advanced.txt1 U,N,ARKIT,0002 A,B,TEST,1113 I,M,ARKIT,2224 C,D,TECH,3335 T,I,RAVI,444

Erforderliche Ausgabe: Nun sollen nur die Zeilen ausgegeben werden, in denen das 2. Feld die Zeichenkette „ARKIT“ als 3. Feld hat.

The output is:1 U,N,ARKIT,0003 I,M,ARKIT,222

Der awk-Befehl, um die Ausgabe zu erhalten, ist unten aufgeführt

Command: awk '{ split($2,arr,","); if(arr == "0") print $0 } ' advanced.txt
# awk '{ split($2,arr,","); if(arr == "ARKIT") print $0} ' advanced.txt1 U,N,ARKIT,0003 I,M,ARKIT,222

Ein paar awk-Befehle / Tool-Beispiele werden wir in einem kommenden Beitrag sehen Stay tune.

Schlüsselwörter: awk scripting in linux,how to run a awk script in linux,how to write an awk script in linux,awk in linux bash,awk in linux command,awk script examples linux,awk in linux example,awk in linux means,awk in linux pdf,awk in linux programming,awk in linux ppt,awk in linux shell script,awk befehl in linux shell scripting,awk in linux tutorial,awk in linux terminal,awk in linux mit beispielen,awk scripting, awk scripting, awk scripting, awk scripting, awk scripting

Danke für das Lesen.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.