Awk ist eine Skriptsprache zum Bearbeiten von Daten und zum Generieren von Berichten.Die Programmiersprache awk command erfordert kein Kompilieren und ermöglicht dem Benutzer die Verwendung von Variablen, numerischen Funktionen, Zeichenfolgenfunktionen und logischen Operatoren.

Awk ist ein Dienstprogramm, mit dem ein Programmierer winzige, aber effektive Programme in Form von Anweisungen schreiben kann, die Textmuster definieren, nach denen in jeder Zeile eines Dokuments gesucht werden soll, und die Aktion, die ausgeführt werden soll, wenn eine Übereinstimmung innerhalb einer Zeile gefunden wird., Awk wird hauptsächlich zum Scannen und Verarbeiten von Mustern verwendet. Es durchsucht eine oder mehrere Dateien, um zu sehen, ob sie Zeilen enthalten, die mit den angegebenen Mustern übereinstimmen, und führt dann die zugehörigen Aktionen aus.

Awk wird von den Namen der Entwickler abgekürzt – Aho, Weinberger und Kernighan.

WAS KÖNNEN WIR MIT AWK MACHEN ?

1. AWK-Operationen:
(a) Scannt eine Datei Zeile für Zeile
(b) Teilt jede Eingabezeile in Felder
(c) Vergleicht Eingabezeile/Felder mit Pattern
(d) Führt Aktionen in übereinstimmenden Zeilen aus

2., Nützlich für:
(a) Transformieren Sie Datendateien
(b) Erstellen Sie formatierte Berichte

3. Programmierung Konstrukte:
(a) Format ausgabe linien
(b) Arithmetik und string operationen
(c) Bedingungen und schleifen

Syntax:

awk options 'selection _criteria {action }' input-file > output-file

Optionen:

-f program-file : Reads the AWK program source from the file program-file, instead of from the first command line argument.-F fs : Use fs for the input field separator

Probe Befehle

Beispiel:
Betrachten die folgenden text datei als die eingang datei für alle Fälle unten.

$cat > employee.txt 
ajay manager account 45000sunil clerk account 25000varun manager sales 50000amit manager account 47000tarun peon sales 15000deepak clerk sales 23000sunil peon sales 13000satvik director purchase 80000 

1. Standardverhalten von Awk: Standardmäßig druckt Awk jede Datenzeile aus der angegebenen Datei.,

$ awk '{print}' employee.txt

Ausgabe:

ajay manager account 45000sunil clerk account 25000varun manager sales 50000amit manager account 47000tarun peon sales 15000deepak clerk sales 23000sunil peon sales 13000satvik director purchase 80000 

Im obigen Beispiel ist kein Muster angegeben. Die Aktionen gelten also für alle Zeilen. Aktion Drucken ohne Argument druckt standardmäßig die gesamte Zeile, sodass alle Zeilen der Datei fehlerfrei gedruckt werden.

2. Drucken Sie die Zeilen, die mit dem angegebenen Muster übereinstimmen.

Ausgabe:

ajay manager account 45000varun manager sales 50000amit manager account 47000 

Im obigen Beispiel gibt der Befehl awk die Zeile aus, die mit dem ‚manager’übereinstimmt.

3., Aufteilen einer Zeile in Felder: Für jeden Datensatz, dh jede Zeile, teilt der Befehl awk den durch Leerzeichen getrennten Datensatz standardmäßig auf und speichert ihn in den Variablen $n. Wenn die Zeile 4 Wörter enthält,wird sie in $1, $2, $3 bzw. Außerdem repräsentiert $0 die gesamte Zeile.

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

Ausgabe:

ajay 45000sunil 25000varun 50000amit 47000tarun 15000deepak 23000sunil 13000satvik 80000 

Im obigen Beispiel stellen $1 und $4 die Felder Name und Gehalt dar.,

Integrierte Variablen In Awk

Die integrierten Variablen von Awk umfassen die Feldvariablen—$1, $2, $3, und so weiter ($0 ist die gesamte Zeile) — das zerlegt eine Textzeile in einzelne Wörter oder Teile, die als Felder bezeichnet werden.

NR: NR Befehl hält eine aktuelle Zählung der Anzahl der Eingabedatensätze. Denken Sie daran, dass Datensätze normalerweise Zeilen sind. Awk Befehl führt die Pattern/Action-Anweisungen einmal für jeden Datensatz in einer Datei.

NF: Der Befehl NF zählt die Anzahl der Felder innerhalb des aktuellen Eingabedatensatzes.,

FS: Der Befehl FS enthält das Feldtrennzeichen, das zum Teilen von Feldern in der Eingabezeile verwendet wird. Der Standardwert ist „Leerzeichen“, also Leerzeichen und Tabulatorzeichen. FS kann einem anderen Zeichen (normalerweise in BEGIN) zugewiesen werden, um das Feldtrennzeichen zu ändern.

RS: RS Befehl speichert das aktuelle Datensatztrennzeichen. Da standardmäßig eine Eingabezeile der Eingabedatensatz ist, ist das standardmäßige Datensatztrennzeichen eine neue Zeile.

OFS: Der Befehl OFS speichert das Ausgabefeldtrennzeichen, das die Felder trennt, wenn Awk sie druckt. Der Standardwert ist ein Leerzeichen., Wenn print mehrere Parameter durch Kommas getrennt hat, wird der Wert von OFS zwischen den einzelnen Parametern gedruckt.

ORS: Der Befehl ORS speichert das Ausgabedatensatztrennzeichen, das die Ausgabezeilen trennt, wenn Awk sie druckt. Der Standardwert ist ein Zeilenumbruchzeichen. print gibt automatisch den Inhalt von ORS am Ende dessen aus, was es zum Drucken gegeben hat.,

Beispiele:

Verwendung der eingebauten NR-Variablen (Zeilennummer anzeigen)

$ awk '{print NR,$0}' employee.txt 

Ausgabe:

1 ajay manager account 450002 sunil clerk account 250003 varun manager sales 500004 amit manager account 470005 tarun peon sales 150006 deepak clerk sales 230007 sunil peon sales 130008 satvik director purchase 80000 

Im obigen Beispiel druckt der Befehl awk mit NR alle Zeilen zusammen mit der Zeilennummer.

Verwendung der in NF integrierten Variablen (Letztes Feld anzeigen)

$ awk '{print $1,$NF}' employee.txt 

Ausgabe:

ajay 45000sunil 25000varun 50000amit 47000tarun 15000deepak 23000sunil 13000satvik 80000 

Im obigen Beispiel steht $1 für Name und $NF für Gehalt. Wir können das Gehalt mit $NF erhalten, wobei $NF das letzte Feld darstellt.,

Eine weitere Verwendung der integrierten Variablen (Anzeigezeile von 3 bis 6)

$ awk 'NR==3, NR==6 {print NR,$0}' employee.txt 

Ausgabe:

3 varun manager sales 500004 amit manager account 470005 tarun peon sales 150006 deepak clerk sales 23000 

Weitere Beispiele

Für die angegebene Textdatei:

$cat > geeksforgeeks.txtA B CTarun A12 1Man B6 2Praveen M42 3

1) Zum Drucken der ersten artikel zusammen mit der Zeilennummer(NR) getrennt mit “ – “ von jeder Zeile in geeksforgeeks.txt:

$ awk '{print NR "- " $1 }' geeksforgeeks.txt
1 - Tarun2 – Manav 3 - Praveen

2), Um die Rückkehr der zweiten Zeile/Element aus geeksforgeeks.,die in der Datei vorhandene Zeile:

$ awk '{ if (length($0) > max) max = length($0) } END { print max }' geeksforgeeks.txt
13

5) Zum Zählen der Zeilen in einer Datei:

$ awk 'END { print NR }' geeksforgeeks.txt
3

6) Drucken von Zeilen mit mehr als 10 Zeichen:

$ awk 'length($0) > 10' geeksforgeeks.txt
Tarun A12 1Praveen M42 3

7) Zu finden/überprüfen für jede string in eine bestimmte spalte:

$ awk '{ if($3 == "B6") print $0;}' geeksforgeeks.txt

8) zu drucken die quadrate der ersten zahlen von 1 zu n sagen 6:

$ awk 'BEGIN { for(i=1;i<=6;i++) print "square of", i, "is",i*i; }'
square of 1 is 1square of 2 is 4square of 3 is 9square of 4 is 16square of 5 is 25square of 6 is 36

Dieser Artikel wird von Anshika Goyal und Praveen Negi beigesteuert., Wenn Sie GeeksforGeeks mögen und einen Beitrag leisten möchten, können Sie auch einen Artikel mit schreiben contribute.geeksforgeeks.org oder mailen Sie Ihren Artikel an [email protected]. Sehen Sie Ihren Artikel auf der Hauptseite von GeeksforGeeks und helfen Sie anderen Geeks.

Articles

Schreibe einen Kommentar

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