logo

AWK-Befehl unter Unix/Linux mit Beispielen

Awk ist eine Skriptsprache, die zum Bearbeiten von Daten und zum Erstellen von Berichten verwendet wird. Die Befehlsprogrammiersprache awk erfordert keine Kompilierung und ermöglicht dem Benutzer die Verwendung von Variablen, numerischen Funktionen, Zeichenfolgenfunktionen und logischen Operatoren.

Awk ist ein Dienstprogramm, das es einem Programmierer ermöglicht, kleine, aber effektive Programme in Form von Anweisungen zu schreiben, 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 eines Dokuments gefunden wird Linie. Awk wird hauptsächlich zum Scannen und Verarbeiten von Mustern verwendet. Es durchsucht eine oder mehrere Dateien, um festzustellen, ob sie Zeilen enthalten, die mit den angegebenen Mustern übereinstimmen, und führt dann die zugehörigen Aktionen aus.



Awk ist die Abkürzung der Namen der Entwickler – 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 auf
(c) Vergleicht Eingabezeilen/-felder mit Muster
(d) Führt Aktionen für übereinstimmende Zeilen aus



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

3. Programmierkonstrukte:
(a) Ausgabezeilen formatieren
(b) Arithmetische und String-Operationen
(c) Bedingungen und Schleifen

Syntax:



Ekta Kapoor Schauspieler
awk options 'selection _criteria {action }' input-file>Ausgabedatei>

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>

Beispielbefehle

Beispiel:

Betrachten Sie die folgende Textdatei als Eingabedatei für alle unten aufgeführten Fälle:

$cat>mitarbeiter.txt>
ajay manager account 45000 sunil clerk account 25000 varun manager sales 50000 amit manager account 47000 tarun peon sales 15000 deepak clerk sales 23000 sunil peon sales 13000 satvik 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 45000 sunil clerk account 25000 varun manager sales 50000 amit manager account 47000 tarun peon sales 15000 deepak clerk sales 23000 sunil peon sales 13000 satvik director purchase 80000>

Im obigen Beispiel ist kein Muster angegeben. Die Aktionen sind also auf alle Zeilen anwendbar. Die Aktion „Drucken ohne Argument“ druckt standardmäßig die gesamte Zeile, sodass alle Zeilen der Datei ohne Fehler gedruckt werden.

2. Drucken Sie die Linien aus, die dem vorgegebenen Muster entsprechen.

$ awk '/manager/ {print}' employee.txt>

Ausgabe:

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

Im obigen Beispiel gibt der Befehl awk die gesamte Zeile aus, die mit „manager“ übereinstimmt.

3. Eine Zeile in Felder aufteilen: Für jeden Datensatz, d. h. Zeile, teilt der Befehl awk standardmäßig den durch Leerzeichen getrennten Datensatz auf und speichert ihn in den $n-Variablen. Wenn die Zeile 4 Wörter enthält, wird sie in , , bzw. gespeichert. Außerdem steht

Awk ist eine Skriptsprache, die zum Bearbeiten von Daten und zum Erstellen von Berichten verwendet wird. Die Befehlsprogrammiersprache awk erfordert keine Kompilierung und ermöglicht dem Benutzer die Verwendung von Variablen, numerischen Funktionen, Zeichenfolgenfunktionen und logischen Operatoren.

Awk ist ein Dienstprogramm, das es einem Programmierer ermöglicht, kleine, aber effektive Programme in Form von Anweisungen zu schreiben, 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 eines Dokuments gefunden wird Linie. Awk wird hauptsächlich zum Scannen und Verarbeiten von Mustern verwendet. Es durchsucht eine oder mehrere Dateien, um festzustellen, ob sie Zeilen enthalten, die mit den angegebenen Mustern übereinstimmen, und führt dann die zugehörigen Aktionen aus.

Awk ist die Abkürzung der Namen der Entwickler – 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 auf
(c) Vergleicht Eingabezeilen/-felder mit Muster
(d) Führt Aktionen für übereinstimmende Zeilen aus

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

3. Programmierkonstrukte:
(a) Ausgabezeilen formatieren
(b) Arithmetische und String-Operationen
(c) Bedingungen und Schleifen

Syntax:

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

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>

Beispielbefehle

Beispiel:

Betrachten Sie die folgende Textdatei als Eingabedatei für alle unten aufgeführten Fälle:

$cat>mitarbeiter.txt>
ajay manager account 45000 sunil clerk account 25000 varun manager sales 50000 amit manager account 47000 tarun peon sales 15000 deepak clerk sales 23000 sunil peon sales 13000 satvik 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 45000 sunil clerk account 25000 varun manager sales 50000 amit manager account 47000 tarun peon sales 15000 deepak clerk sales 23000 sunil peon sales 13000 satvik director purchase 80000>

Im obigen Beispiel ist kein Muster angegeben. Die Aktionen sind also auf alle Zeilen anwendbar. Die Aktion „Drucken ohne Argument“ druckt standardmäßig die gesamte Zeile, sodass alle Zeilen der Datei ohne Fehler gedruckt werden.

2. Drucken Sie die Linien aus, die dem vorgegebenen Muster entsprechen.

$ awk '/manager/ {print}' employee.txt>

Ausgabe:

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

Im obigen Beispiel gibt der Befehl awk die gesamte Zeile aus, die mit „manager“ übereinstimmt.

3. Eine Zeile in Felder aufteilen: Für jeden Datensatz, d. h. Zeile, teilt der Befehl awk standardmäßig den durch Leerzeichen getrennten Datensatz auf und speichert ihn in den $n-Variablen. Wenn die Zeile 4 Wörter enthält, wird sie in $1, $2, $3 bzw. $4 gespeichert. Außerdem steht $0 für die gesamte Zeile.

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

Ausgabe:

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

Im obigen Beispiel stehen $1 und $4 für die Felder „Name“ und „Gehalt“.

Integrierte Variablen in Awk

Zu den integrierten Variablen von Awk gehören die Feldvariablen – $1, $2, $3 usw. ($0 ist die gesamte Zeile) –, die eine Textzeile in einzelne Wörter oder Teile, sogenannte Felder, aufteilen.

    NR: Der NR-Befehl führt eine aktuelle Zählung der Anzahl der Eingabedatensätze. Denken Sie daran, dass Datensätze normalerweise Zeilen sind. Der Befehl Awk führt die Muster-/Aktionsanweisungen einmal für jeden Datensatz in einer Datei aus. NF: Der NF-Befehl zählt die Anzahl der Felder im aktuellen Eingabedatensatz. FS: Der FS-Befehl 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: Der RS-Befehl speichert das aktuelle Datensatztrennzeichen. Da eine Eingabezeile standardmäßig der Eingabedatensatz ist, ist das Standardtrennzeichen für Datensätze ein Zeilenumbruch. OFS: Der OFS-Befehl speichert das Ausgabefeldtrennzeichen, das die Felder trennt, wenn Awk sie druckt. Der Standardwert ist ein Leerzeichen. Immer wenn print mehrere durch Kommas getrennte Parameter enthält, wird der Wert von OFS zwischen den einzelnen Parametern gedruckt. ORS: Der ORS-Befehl speichert das Ausgabedatensatztrennzeichen, das die Ausgabezeilen trennt, wenn Awk sie druckt. Der Standardwert ist ein Zeilenumbruchzeichen. print gibt den Inhalt von ORS am Ende dessen, was zum Drucken gegeben wird, automatisch aus.

Beispiele:

Verwendung integrierter NR-Variablen (Zeilennummer anzeigen)

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

Ausgabe:

1 ajay manager account 45000 2 sunil clerk account 25000 3 varun manager sales 50000 4 amit manager account 47000 5 tarun peon sales 15000 6 deepak clerk sales 23000 7 sunil peon sales 13000 8 satvik director purchase 80000>

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

Verwendung integrierter NF-Variablen (Letztes Feld anzeigen)

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

Ausgabe:

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

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

Eine andere Verwendung von integrierten NR-Variablen (Anzeigezeile von 3 bis 6)

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

Ausgabe:

3 varun manager sales 50000 4 amit manager account 47000 5 tarun peon sales 15000 6 deepak clerk sales 23000>

Mehr Beispiele

Für die angegebene Textdatei:

$cat>geeksforgeeks.txt A B C Tarun A12 1 Man B6 2 Praveen M42 3>

1) So drucken Sie das erste Element zusammen mit der Zeilennummer (NR), getrennt durch –, aus jeder Zeile in geeksforgeeks.txt:

$ awk '{print NR '- ' $1 }' geeksforgeeks.txt>
1 - A 2 - Tarun 3 – Manav 4 - Praveen>

2) So geben Sie die zweite Spalte/das zweite Element aus geeksforgeeks.txt zurück:

Die Frage sollte lauten: – So geben Sie die zweite Spalte/das zweite Element aus geeksforgeeks.txt zurück:

$ awk '{print $2}' geeksforgeeks.txt>
B A12 B6 M42>

3) Um jede nicht leere Zeile auszudrucken, falls vorhanden

$ awk 'NF <0' geeksforgeeks.txt>

Hier sollte NF 0 sein, nicht kleiner als und der Benutzer muss auch die Zeilennummer drucken:

Richtige Antwort: awk ‚NF == 0 {print NR}‘ geeksforgeeks.txt

ODER

awk ‚NF <= 0 {print NR}‘ geeksforgeeks.txt

0>

4) So ermitteln Sie die Länge der längsten Zeile in der Datei:

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

5) So zählen Sie die 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 1 Praveen M42 3>

7) So suchen/überprüfen Sie eine beliebige Zeichenfolge in einer bestimmten Spalte:

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

8) Um die Quadrate der ersten Zahlen von 1 bis n auszudrucken, sagen wir 6:

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


für die gesamte Zeile.

$ awk '{print ,}' employee.txt>

Ausgabe:

Zeile Autocad-Befehl
ajay 45000 sunil 25000 varun 50000 amit 47000 tarun 15000 deepak 23000 sunil 13000 satvik 80000>

Im obigen Beispiel stehen und für die Felder „Name“ und „Gehalt“.

Integrierte Variablen in Awk

Zu den integrierten Variablen von Awk gehören die Feldvariablen – , , usw. (

Awk ist eine Skriptsprache, die zum Bearbeiten von Daten und zum Erstellen von Berichten verwendet wird. Die Befehlsprogrammiersprache awk erfordert keine Kompilierung und ermöglicht dem Benutzer die Verwendung von Variablen, numerischen Funktionen, Zeichenfolgenfunktionen und logischen Operatoren.

Awk ist ein Dienstprogramm, das es einem Programmierer ermöglicht, kleine, aber effektive Programme in Form von Anweisungen zu schreiben, 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 eines Dokuments gefunden wird Linie. Awk wird hauptsächlich zum Scannen und Verarbeiten von Mustern verwendet. Es durchsucht eine oder mehrere Dateien, um festzustellen, ob sie Zeilen enthalten, die mit den angegebenen Mustern übereinstimmen, und führt dann die zugehörigen Aktionen aus.

Awk ist die Abkürzung der Namen der Entwickler – 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 auf
(c) Vergleicht Eingabezeilen/-felder mit Muster
(d) Führt Aktionen für übereinstimmende Zeilen aus

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

3. Programmierkonstrukte:
(a) Ausgabezeilen formatieren
(b) Arithmetische und String-Operationen
(c) Bedingungen und Schleifen

Syntax:

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

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>

Beispielbefehle

Beispiel:

Betrachten Sie die folgende Textdatei als Eingabedatei für alle unten aufgeführten Fälle:

$cat>mitarbeiter.txt>
ajay manager account 45000 sunil clerk account 25000 varun manager sales 50000 amit manager account 47000 tarun peon sales 15000 deepak clerk sales 23000 sunil peon sales 13000 satvik 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 45000 sunil clerk account 25000 varun manager sales 50000 amit manager account 47000 tarun peon sales 15000 deepak clerk sales 23000 sunil peon sales 13000 satvik director purchase 80000>

Im obigen Beispiel ist kein Muster angegeben. Die Aktionen sind also auf alle Zeilen anwendbar. Die Aktion „Drucken ohne Argument“ druckt standardmäßig die gesamte Zeile, sodass alle Zeilen der Datei ohne Fehler gedruckt werden.

2. Drucken Sie die Linien aus, die dem vorgegebenen Muster entsprechen.

$ awk '/manager/ {print}' employee.txt>

Ausgabe:

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

Im obigen Beispiel gibt der Befehl awk die gesamte Zeile aus, die mit „manager“ übereinstimmt.

3. Eine Zeile in Felder aufteilen: Für jeden Datensatz, d. h. Zeile, teilt der Befehl awk standardmäßig den durch Leerzeichen getrennten Datensatz auf und speichert ihn in den $n-Variablen. Wenn die Zeile 4 Wörter enthält, wird sie in $1, $2, $3 bzw. $4 gespeichert. Außerdem steht $0 für die gesamte Zeile.

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

Ausgabe:

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

Im obigen Beispiel stehen $1 und $4 für die Felder „Name“ und „Gehalt“.

Integrierte Variablen in Awk

Zu den integrierten Variablen von Awk gehören die Feldvariablen – $1, $2, $3 usw. ($0 ist die gesamte Zeile) –, die eine Textzeile in einzelne Wörter oder Teile, sogenannte Felder, aufteilen.

    NR: Der NR-Befehl führt eine aktuelle Zählung der Anzahl der Eingabedatensätze. Denken Sie daran, dass Datensätze normalerweise Zeilen sind. Der Befehl Awk führt die Muster-/Aktionsanweisungen einmal für jeden Datensatz in einer Datei aus. NF: Der NF-Befehl zählt die Anzahl der Felder im aktuellen Eingabedatensatz. FS: Der FS-Befehl 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: Der RS-Befehl speichert das aktuelle Datensatztrennzeichen. Da eine Eingabezeile standardmäßig der Eingabedatensatz ist, ist das Standardtrennzeichen für Datensätze ein Zeilenumbruch. OFS: Der OFS-Befehl speichert das Ausgabefeldtrennzeichen, das die Felder trennt, wenn Awk sie druckt. Der Standardwert ist ein Leerzeichen. Immer wenn print mehrere durch Kommas getrennte Parameter enthält, wird der Wert von OFS zwischen den einzelnen Parametern gedruckt. ORS: Der ORS-Befehl speichert das Ausgabedatensatztrennzeichen, das die Ausgabezeilen trennt, wenn Awk sie druckt. Der Standardwert ist ein Zeilenumbruchzeichen. print gibt den Inhalt von ORS am Ende dessen, was zum Drucken gegeben wird, automatisch aus.

Beispiele:

Verwendung integrierter NR-Variablen (Zeilennummer anzeigen)

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

Ausgabe:

1 ajay manager account 45000 2 sunil clerk account 25000 3 varun manager sales 50000 4 amit manager account 47000 5 tarun peon sales 15000 6 deepak clerk sales 23000 7 sunil peon sales 13000 8 satvik director purchase 80000>

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

Verwendung integrierter NF-Variablen (Letztes Feld anzeigen)

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

Ausgabe:

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

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

Eine andere Verwendung von integrierten NR-Variablen (Anzeigezeile von 3 bis 6)

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

Ausgabe:

3 varun manager sales 50000 4 amit manager account 47000 5 tarun peon sales 15000 6 deepak clerk sales 23000>

Mehr Beispiele

Für die angegebene Textdatei:

$cat>geeksforgeeks.txt A B C Tarun A12 1 Man B6 2 Praveen M42 3>

1) So drucken Sie das erste Element zusammen mit der Zeilennummer (NR), getrennt durch –, aus jeder Zeile in geeksforgeeks.txt:

$ awk '{print NR '- ' $1 }' geeksforgeeks.txt>
1 - A 2 - Tarun 3 – Manav 4 - Praveen>

2) So geben Sie die zweite Spalte/das zweite Element aus geeksforgeeks.txt zurück:

Die Frage sollte lauten: – So geben Sie die zweite Spalte/das zweite Element aus geeksforgeeks.txt zurück:

$ awk '{print $2}' geeksforgeeks.txt>
B A12 B6 M42>

3) Um jede nicht leere Zeile auszudrucken, falls vorhanden

$ awk 'NF <0' geeksforgeeks.txt>

Hier sollte NF 0 sein, nicht kleiner als und der Benutzer muss auch die Zeilennummer drucken:

Richtige Antwort: awk ‚NF == 0 {print NR}‘ geeksforgeeks.txt

ODER

awk ‚NF <= 0 {print NR}‘ geeksforgeeks.txt

0>

4) So ermitteln Sie die Länge der längsten Zeile in der Datei:

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

5) So zählen Sie die 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 1 Praveen M42 3>

7) So suchen/überprüfen Sie eine beliebige Zeichenfolge in einer bestimmten Spalte:

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

8) Um die Quadrate der ersten Zahlen von 1 bis n auszudrucken, sagen wir 6:

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


ist die gesamte Zeile) –, die eine Textzeile in einzelne Wörter oder Teile, sogenannte Felder, aufteilen.

    NR: Der NR-Befehl führt eine aktuelle Zählung der Anzahl der Eingabedatensätze. Denken Sie daran, dass Datensätze normalerweise Zeilen sind. Der Befehl Awk führt die Muster-/Aktionsanweisungen einmal für jeden Datensatz in einer Datei aus. NF: Der NF-Befehl zählt die Anzahl der Felder im aktuellen Eingabedatensatz. FS: Der FS-Befehl 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: Der RS-Befehl speichert das aktuelle Datensatztrennzeichen. Da eine Eingabezeile standardmäßig der Eingabedatensatz ist, ist das Standardtrennzeichen für Datensätze ein Zeilenumbruch. OFS: Der OFS-Befehl speichert das Ausgabefeldtrennzeichen, das die Felder trennt, wenn Awk sie druckt. Der Standardwert ist ein Leerzeichen. Immer wenn print mehrere durch Kommas getrennte Parameter enthält, wird der Wert von OFS zwischen den einzelnen Parametern gedruckt. ORS: Der ORS-Befehl speichert das Ausgabedatensatztrennzeichen, das die Ausgabezeilen trennt, wenn Awk sie druckt. Der Standardwert ist ein Zeilenumbruchzeichen. print gibt den Inhalt von ORS am Ende dessen, was zum Drucken gegeben wird, automatisch aus.

Beispiele:

Verwendung integrierter NR-Variablen (Zeilennummer anzeigen)

$ awk '{print NR,

Awk ist eine Skriptsprache, die zum Bearbeiten von Daten und zum Erstellen von Berichten verwendet wird. Die Befehlsprogrammiersprache awk erfordert keine Kompilierung und ermöglicht dem Benutzer die Verwendung von Variablen, numerischen Funktionen, Zeichenfolgenfunktionen und logischen Operatoren.

Awk ist ein Dienstprogramm, das es einem Programmierer ermöglicht, kleine, aber effektive Programme in Form von Anweisungen zu schreiben, 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 eines Dokuments gefunden wird Linie. Awk wird hauptsächlich zum Scannen und Verarbeiten von Mustern verwendet. Es durchsucht eine oder mehrere Dateien, um festzustellen, ob sie Zeilen enthalten, die mit den angegebenen Mustern übereinstimmen, und führt dann die zugehörigen Aktionen aus.

Awk ist die Abkürzung der Namen der Entwickler – 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 auf
(c) Vergleicht Eingabezeilen/-felder mit Muster
(d) Führt Aktionen für übereinstimmende Zeilen aus

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

3. Programmierkonstrukte:
(a) Ausgabezeilen formatieren
(b) Arithmetische und String-Operationen
(c) Bedingungen und Schleifen

Syntax:

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

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>

Beispielbefehle

Beispiel:

Betrachten Sie die folgende Textdatei als Eingabedatei für alle unten aufgeführten Fälle:

$cat>mitarbeiter.txt>
ajay manager account 45000 sunil clerk account 25000 varun manager sales 50000 amit manager account 47000 tarun peon sales 15000 deepak clerk sales 23000 sunil peon sales 13000 satvik 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 45000 sunil clerk account 25000 varun manager sales 50000 amit manager account 47000 tarun peon sales 15000 deepak clerk sales 23000 sunil peon sales 13000 satvik director purchase 80000>

Im obigen Beispiel ist kein Muster angegeben. Die Aktionen sind also auf alle Zeilen anwendbar. Die Aktion „Drucken ohne Argument“ druckt standardmäßig die gesamte Zeile, sodass alle Zeilen der Datei ohne Fehler gedruckt werden.

2. Drucken Sie die Linien aus, die dem vorgegebenen Muster entsprechen.

$ awk '/manager/ {print}' employee.txt>

Ausgabe:

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

Im obigen Beispiel gibt der Befehl awk die gesamte Zeile aus, die mit „manager“ übereinstimmt.

3. Eine Zeile in Felder aufteilen: Für jeden Datensatz, d. h. Zeile, teilt der Befehl awk standardmäßig den durch Leerzeichen getrennten Datensatz auf und speichert ihn in den $n-Variablen. Wenn die Zeile 4 Wörter enthält, wird sie in $1, $2, $3 bzw. $4 gespeichert. Außerdem steht $0 für die gesamte Zeile.

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

Ausgabe:

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

Im obigen Beispiel stehen $1 und $4 für die Felder „Name“ und „Gehalt“.

Integrierte Variablen in Awk

Zu den integrierten Variablen von Awk gehören die Feldvariablen – $1, $2, $3 usw. ($0 ist die gesamte Zeile) –, die eine Textzeile in einzelne Wörter oder Teile, sogenannte Felder, aufteilen.

    NR: Der NR-Befehl führt eine aktuelle Zählung der Anzahl der Eingabedatensätze. Denken Sie daran, dass Datensätze normalerweise Zeilen sind. Der Befehl Awk führt die Muster-/Aktionsanweisungen einmal für jeden Datensatz in einer Datei aus. NF: Der NF-Befehl zählt die Anzahl der Felder im aktuellen Eingabedatensatz. FS: Der FS-Befehl 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: Der RS-Befehl speichert das aktuelle Datensatztrennzeichen. Da eine Eingabezeile standardmäßig der Eingabedatensatz ist, ist das Standardtrennzeichen für Datensätze ein Zeilenumbruch. OFS: Der OFS-Befehl speichert das Ausgabefeldtrennzeichen, das die Felder trennt, wenn Awk sie druckt. Der Standardwert ist ein Leerzeichen. Immer wenn print mehrere durch Kommas getrennte Parameter enthält, wird der Wert von OFS zwischen den einzelnen Parametern gedruckt. ORS: Der ORS-Befehl speichert das Ausgabedatensatztrennzeichen, das die Ausgabezeilen trennt, wenn Awk sie druckt. Der Standardwert ist ein Zeilenumbruchzeichen. print gibt den Inhalt von ORS am Ende dessen, was zum Drucken gegeben wird, automatisch aus.

Beispiele:

Verwendung integrierter NR-Variablen (Zeilennummer anzeigen)

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

Ausgabe:

1 ajay manager account 45000 2 sunil clerk account 25000 3 varun manager sales 50000 4 amit manager account 47000 5 tarun peon sales 15000 6 deepak clerk sales 23000 7 sunil peon sales 13000 8 satvik director purchase 80000>

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

Verwendung integrierter NF-Variablen (Letztes Feld anzeigen)

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

Ausgabe:

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

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

Eine andere Verwendung von integrierten NR-Variablen (Anzeigezeile von 3 bis 6)

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

Ausgabe:

3 varun manager sales 50000 4 amit manager account 47000 5 tarun peon sales 15000 6 deepak clerk sales 23000>

Mehr Beispiele

Für die angegebene Textdatei:

$cat>geeksforgeeks.txt A B C Tarun A12 1 Man B6 2 Praveen M42 3>

1) So drucken Sie das erste Element zusammen mit der Zeilennummer (NR), getrennt durch –, aus jeder Zeile in geeksforgeeks.txt:

$ awk '{print NR '- ' $1 }' geeksforgeeks.txt>
1 - A 2 - Tarun 3 – Manav 4 - Praveen>

2) So geben Sie die zweite Spalte/das zweite Element aus geeksforgeeks.txt zurück:

Die Frage sollte lauten: – So geben Sie die zweite Spalte/das zweite Element aus geeksforgeeks.txt zurück:

$ awk '{print $2}' geeksforgeeks.txt>
B A12 B6 M42>

3) Um jede nicht leere Zeile auszudrucken, falls vorhanden

$ awk 'NF <0' geeksforgeeks.txt>

Hier sollte NF 0 sein, nicht kleiner als und der Benutzer muss auch die Zeilennummer drucken:

Richtige Antwort: awk ‚NF == 0 {print NR}‘ geeksforgeeks.txt

ODER

awk ‚NF <= 0 {print NR}‘ geeksforgeeks.txt

0>

4) So ermitteln Sie die Länge der längsten Zeile in der Datei:

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

5) So zählen Sie die 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 1 Praveen M42 3>

7) So suchen/überprüfen Sie eine beliebige Zeichenfolge in einer bestimmten Spalte:

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

8) Um die Quadrate der ersten Zahlen von 1 bis n auszudrucken, sagen wir 6:

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


}' employee.txt>

Ausgabe:

1 ajay manager account 45000 2 sunil clerk account 25000 3 varun manager sales 50000 4 amit manager account 47000 5 tarun peon sales 15000 6 deepak clerk sales 23000 7 sunil peon sales 13000 8 satvik director purchase 80000>

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

Verwendung integrierter NF-Variablen (Letztes Feld anzeigen)

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

Ausgabe:

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

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

Eine andere Verwendung von integrierten NR-Variablen (Anzeigezeile von 3 bis 6)

$ awk 'NR==3, NR==6 {print NR,

Awk ist eine Skriptsprache, die zum Bearbeiten von Daten und zum Erstellen von Berichten verwendet wird. Die Befehlsprogrammiersprache awk erfordert keine Kompilierung und ermöglicht dem Benutzer die Verwendung von Variablen, numerischen Funktionen, Zeichenfolgenfunktionen und logischen Operatoren.

Awk ist ein Dienstprogramm, das es einem Programmierer ermöglicht, kleine, aber effektive Programme in Form von Anweisungen zu schreiben, 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 eines Dokuments gefunden wird Linie. Awk wird hauptsächlich zum Scannen und Verarbeiten von Mustern verwendet. Es durchsucht eine oder mehrere Dateien, um festzustellen, ob sie Zeilen enthalten, die mit den angegebenen Mustern übereinstimmen, und führt dann die zugehörigen Aktionen aus.

Awk ist die Abkürzung der Namen der Entwickler – 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 auf
(c) Vergleicht Eingabezeilen/-felder mit Muster
(d) Führt Aktionen für übereinstimmende Zeilen aus

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

3. Programmierkonstrukte:
(a) Ausgabezeilen formatieren
(b) Arithmetische und String-Operationen
(c) Bedingungen und Schleifen

Syntax:

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

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>

Beispielbefehle

Beispiel:

Betrachten Sie die folgende Textdatei als Eingabedatei für alle unten aufgeführten Fälle:

$cat>mitarbeiter.txt>
ajay manager account 45000 sunil clerk account 25000 varun manager sales 50000 amit manager account 47000 tarun peon sales 15000 deepak clerk sales 23000 sunil peon sales 13000 satvik 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 45000 sunil clerk account 25000 varun manager sales 50000 amit manager account 47000 tarun peon sales 15000 deepak clerk sales 23000 sunil peon sales 13000 satvik director purchase 80000>

Im obigen Beispiel ist kein Muster angegeben. Die Aktionen sind also auf alle Zeilen anwendbar. Die Aktion „Drucken ohne Argument“ druckt standardmäßig die gesamte Zeile, sodass alle Zeilen der Datei ohne Fehler gedruckt werden.

2. Drucken Sie die Linien aus, die dem vorgegebenen Muster entsprechen.

$ awk '/manager/ {print}' employee.txt>

Ausgabe:

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

Im obigen Beispiel gibt der Befehl awk die gesamte Zeile aus, die mit „manager“ übereinstimmt.

3. Eine Zeile in Felder aufteilen: Für jeden Datensatz, d. h. Zeile, teilt der Befehl awk standardmäßig den durch Leerzeichen getrennten Datensatz auf und speichert ihn in den $n-Variablen. Wenn die Zeile 4 Wörter enthält, wird sie in $1, $2, $3 bzw. $4 gespeichert. Außerdem steht $0 für die gesamte Zeile.

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

Ausgabe:

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

Im obigen Beispiel stehen $1 und $4 für die Felder „Name“ und „Gehalt“.

Integrierte Variablen in Awk

Zu den integrierten Variablen von Awk gehören die Feldvariablen – $1, $2, $3 usw. ($0 ist die gesamte Zeile) –, die eine Textzeile in einzelne Wörter oder Teile, sogenannte Felder, aufteilen.

    NR: Der NR-Befehl führt eine aktuelle Zählung der Anzahl der Eingabedatensätze. Denken Sie daran, dass Datensätze normalerweise Zeilen sind. Der Befehl Awk führt die Muster-/Aktionsanweisungen einmal für jeden Datensatz in einer Datei aus. NF: Der NF-Befehl zählt die Anzahl der Felder im aktuellen Eingabedatensatz. FS: Der FS-Befehl 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: Der RS-Befehl speichert das aktuelle Datensatztrennzeichen. Da eine Eingabezeile standardmäßig der Eingabedatensatz ist, ist das Standardtrennzeichen für Datensätze ein Zeilenumbruch. OFS: Der OFS-Befehl speichert das Ausgabefeldtrennzeichen, das die Felder trennt, wenn Awk sie druckt. Der Standardwert ist ein Leerzeichen. Immer wenn print mehrere durch Kommas getrennte Parameter enthält, wird der Wert von OFS zwischen den einzelnen Parametern gedruckt. ORS: Der ORS-Befehl speichert das Ausgabedatensatztrennzeichen, das die Ausgabezeilen trennt, wenn Awk sie druckt. Der Standardwert ist ein Zeilenumbruchzeichen. print gibt den Inhalt von ORS am Ende dessen, was zum Drucken gegeben wird, automatisch aus.

Beispiele:

Verwendung integrierter NR-Variablen (Zeilennummer anzeigen)

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

Ausgabe:

1 ajay manager account 45000 2 sunil clerk account 25000 3 varun manager sales 50000 4 amit manager account 47000 5 tarun peon sales 15000 6 deepak clerk sales 23000 7 sunil peon sales 13000 8 satvik director purchase 80000>

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

Verwendung integrierter NF-Variablen (Letztes Feld anzeigen)

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

Ausgabe:

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

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

Eine andere Verwendung von integrierten NR-Variablen (Anzeigezeile von 3 bis 6)

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

Ausgabe:

3 varun manager sales 50000 4 amit manager account 47000 5 tarun peon sales 15000 6 deepak clerk sales 23000>

Mehr Beispiele

Für die angegebene Textdatei:

$cat>geeksforgeeks.txt A B C Tarun A12 1 Man B6 2 Praveen M42 3>

1) So drucken Sie das erste Element zusammen mit der Zeilennummer (NR), getrennt durch –, aus jeder Zeile in geeksforgeeks.txt:

$ awk '{print NR '- ' $1 }' geeksforgeeks.txt>
1 - A 2 - Tarun 3 – Manav 4 - Praveen>

2) So geben Sie die zweite Spalte/das zweite Element aus geeksforgeeks.txt zurück:

Die Frage sollte lauten: – So geben Sie die zweite Spalte/das zweite Element aus geeksforgeeks.txt zurück:

$ awk '{print $2}' geeksforgeeks.txt>
B A12 B6 M42>

3) Um jede nicht leere Zeile auszudrucken, falls vorhanden

$ awk 'NF <0' geeksforgeeks.txt>

Hier sollte NF 0 sein, nicht kleiner als und der Benutzer muss auch die Zeilennummer drucken:

Richtige Antwort: awk ‚NF == 0 {print NR}‘ geeksforgeeks.txt

ODER

awk ‚NF <= 0 {print NR}‘ geeksforgeeks.txt

0>

4) So ermitteln Sie die Länge der längsten Zeile in der Datei:

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

5) So zählen Sie die 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 1 Praveen M42 3>

7) So suchen/überprüfen Sie eine beliebige Zeichenfolge in einer bestimmten Spalte:

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

8) Um die Quadrate der ersten Zahlen von 1 bis n auszudrucken, sagen wir 6:

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


}' employee.txt>

Ausgabe:

3 varun manager sales 50000 4 amit manager account 47000 5 tarun peon sales 15000 6 deepak clerk sales 23000>

Mehr Beispiele

Laden Sie YouTube mit VLC herunter

Für die angegebene Textdatei:

$cat>geeksforgeeks.txt A B C Tarun A12 1 Man B6 2 Praveen M42 3>

1) So drucken Sie das erste Element zusammen mit der Zeilennummer (NR), getrennt durch –, aus jeder Zeile in geeksforgeeks.txt:

$ awk '{print NR '- '  }' geeksforgeeks.txt>
1 - A 2 - Tarun 3 – Manav 4 - Praveen>

2) So geben Sie die zweite Spalte/das zweite Element aus geeksforgeeks.txt zurück:

Die Frage sollte lauten: – So geben Sie die zweite Spalte/das zweite Element aus geeksforgeeks.txt zurück:

$ awk '{print }' geeksforgeeks.txt>
B A12 B6 M42>

3) Um jede nicht leere Zeile auszudrucken, falls vorhanden

$ awk 'NF <0' geeksforgeeks.txt>

Hier sollte NF 0 sein, nicht kleiner als und der Benutzer muss auch die Zeilennummer drucken:

Richtige Antwort: awk ‚NF == 0 {print NR}‘ geeksforgeeks.txt

ODER

ssis

awk ‚NF <= 0 {print NR}‘ geeksforgeeks.txt

0>

4) So ermitteln Sie die Länge der längsten Zeile in der Datei:

$ awk '{ if (length(

Awk ist eine Skriptsprache, die zum Bearbeiten von Daten und zum Erstellen von Berichten verwendet wird. Die Befehlsprogrammiersprache awk erfordert keine Kompilierung und ermöglicht dem Benutzer die Verwendung von Variablen, numerischen Funktionen, Zeichenfolgenfunktionen und logischen Operatoren.

Awk ist ein Dienstprogramm, das es einem Programmierer ermöglicht, kleine, aber effektive Programme in Form von Anweisungen zu schreiben, 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 eines Dokuments gefunden wird Linie. Awk wird hauptsächlich zum Scannen und Verarbeiten von Mustern verwendet. Es durchsucht eine oder mehrere Dateien, um festzustellen, ob sie Zeilen enthalten, die mit den angegebenen Mustern übereinstimmen, und führt dann die zugehörigen Aktionen aus.

Awk ist die Abkürzung der Namen der Entwickler – 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 auf
(c) Vergleicht Eingabezeilen/-felder mit Muster
(d) Führt Aktionen für übereinstimmende Zeilen aus

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

3. Programmierkonstrukte:
(a) Ausgabezeilen formatieren
(b) Arithmetische und String-Operationen
(c) Bedingungen und Schleifen

Syntax:

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

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>

Beispielbefehle

Beispiel:

Betrachten Sie die folgende Textdatei als Eingabedatei für alle unten aufgeführten Fälle:

$cat>mitarbeiter.txt>
ajay manager account 45000 sunil clerk account 25000 varun manager sales 50000 amit manager account 47000 tarun peon sales 15000 deepak clerk sales 23000 sunil peon sales 13000 satvik 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 45000 sunil clerk account 25000 varun manager sales 50000 amit manager account 47000 tarun peon sales 15000 deepak clerk sales 23000 sunil peon sales 13000 satvik director purchase 80000>

Im obigen Beispiel ist kein Muster angegeben. Die Aktionen sind also auf alle Zeilen anwendbar. Die Aktion „Drucken ohne Argument“ druckt standardmäßig die gesamte Zeile, sodass alle Zeilen der Datei ohne Fehler gedruckt werden.

2. Drucken Sie die Linien aus, die dem vorgegebenen Muster entsprechen.

$ awk '/manager/ {print}' employee.txt>

Ausgabe:

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

Im obigen Beispiel gibt der Befehl awk die gesamte Zeile aus, die mit „manager“ übereinstimmt.

3. Eine Zeile in Felder aufteilen: Für jeden Datensatz, d. h. Zeile, teilt der Befehl awk standardmäßig den durch Leerzeichen getrennten Datensatz auf und speichert ihn in den $n-Variablen. Wenn die Zeile 4 Wörter enthält, wird sie in $1, $2, $3 bzw. $4 gespeichert. Außerdem steht $0 für die gesamte Zeile.

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

Ausgabe:

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

Im obigen Beispiel stehen $1 und $4 für die Felder „Name“ und „Gehalt“.

Integrierte Variablen in Awk

Zu den integrierten Variablen von Awk gehören die Feldvariablen – $1, $2, $3 usw. ($0 ist die gesamte Zeile) –, die eine Textzeile in einzelne Wörter oder Teile, sogenannte Felder, aufteilen.

    NR: Der NR-Befehl führt eine aktuelle Zählung der Anzahl der Eingabedatensätze. Denken Sie daran, dass Datensätze normalerweise Zeilen sind. Der Befehl Awk führt die Muster-/Aktionsanweisungen einmal für jeden Datensatz in einer Datei aus. NF: Der NF-Befehl zählt die Anzahl der Felder im aktuellen Eingabedatensatz. FS: Der FS-Befehl 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: Der RS-Befehl speichert das aktuelle Datensatztrennzeichen. Da eine Eingabezeile standardmäßig der Eingabedatensatz ist, ist das Standardtrennzeichen für Datensätze ein Zeilenumbruch. OFS: Der OFS-Befehl speichert das Ausgabefeldtrennzeichen, das die Felder trennt, wenn Awk sie druckt. Der Standardwert ist ein Leerzeichen. Immer wenn print mehrere durch Kommas getrennte Parameter enthält, wird der Wert von OFS zwischen den einzelnen Parametern gedruckt. ORS: Der ORS-Befehl speichert das Ausgabedatensatztrennzeichen, das die Ausgabezeilen trennt, wenn Awk sie druckt. Der Standardwert ist ein Zeilenumbruchzeichen. print gibt den Inhalt von ORS am Ende dessen, was zum Drucken gegeben wird, automatisch aus.

Beispiele:

Verwendung integrierter NR-Variablen (Zeilennummer anzeigen)

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

Ausgabe:

1 ajay manager account 45000 2 sunil clerk account 25000 3 varun manager sales 50000 4 amit manager account 47000 5 tarun peon sales 15000 6 deepak clerk sales 23000 7 sunil peon sales 13000 8 satvik director purchase 80000>

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

Verwendung integrierter NF-Variablen (Letztes Feld anzeigen)

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

Ausgabe:

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

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

Eine andere Verwendung von integrierten NR-Variablen (Anzeigezeile von 3 bis 6)

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

Ausgabe:

3 varun manager sales 50000 4 amit manager account 47000 5 tarun peon sales 15000 6 deepak clerk sales 23000>

Mehr Beispiele

Für die angegebene Textdatei:

$cat>geeksforgeeks.txt A B C Tarun A12 1 Man B6 2 Praveen M42 3>

1) So drucken Sie das erste Element zusammen mit der Zeilennummer (NR), getrennt durch –, aus jeder Zeile in geeksforgeeks.txt:

$ awk '{print NR '- ' $1 }' geeksforgeeks.txt>
1 - A 2 - Tarun 3 – Manav 4 - Praveen>

2) So geben Sie die zweite Spalte/das zweite Element aus geeksforgeeks.txt zurück:

Die Frage sollte lauten: – So geben Sie die zweite Spalte/das zweite Element aus geeksforgeeks.txt zurück:

$ awk '{print $2}' geeksforgeeks.txt>
B A12 B6 M42>

3) Um jede nicht leere Zeile auszudrucken, falls vorhanden

$ awk 'NF <0' geeksforgeeks.txt>

Hier sollte NF 0 sein, nicht kleiner als und der Benutzer muss auch die Zeilennummer drucken:

Richtige Antwort: awk ‚NF == 0 {print NR}‘ geeksforgeeks.txt

ODER

awk ‚NF <= 0 {print NR}‘ geeksforgeeks.txt

0>

4) So ermitteln Sie die Länge der längsten Zeile in der Datei:

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

5) So zählen Sie die 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 1 Praveen M42 3>

7) So suchen/überprüfen Sie eine beliebige Zeichenfolge in einer bestimmten Spalte:

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

8) Um die Quadrate der ersten Zahlen von 1 bis n auszudrucken, sagen wir 6:

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


)>max) max = length(

Awk ist eine Skriptsprache, die zum Bearbeiten von Daten und zum Erstellen von Berichten verwendet wird. Die Befehlsprogrammiersprache awk erfordert keine Kompilierung und ermöglicht dem Benutzer die Verwendung von Variablen, numerischen Funktionen, Zeichenfolgenfunktionen und logischen Operatoren.

Awk ist ein Dienstprogramm, das es einem Programmierer ermöglicht, kleine, aber effektive Programme in Form von Anweisungen zu schreiben, 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 eines Dokuments gefunden wird Linie. Awk wird hauptsächlich zum Scannen und Verarbeiten von Mustern verwendet. Es durchsucht eine oder mehrere Dateien, um festzustellen, ob sie Zeilen enthalten, die mit den angegebenen Mustern übereinstimmen, und führt dann die zugehörigen Aktionen aus.

Awk ist die Abkürzung der Namen der Entwickler – 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 auf
(c) Vergleicht Eingabezeilen/-felder mit Muster
(d) Führt Aktionen für übereinstimmende Zeilen aus

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

3. Programmierkonstrukte:
(a) Ausgabezeilen formatieren
(b) Arithmetische und String-Operationen
(c) Bedingungen und Schleifen

Syntax:

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

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>

Beispielbefehle

Beispiel:

Betrachten Sie die folgende Textdatei als Eingabedatei für alle unten aufgeführten Fälle:

$cat>mitarbeiter.txt>
ajay manager account 45000 sunil clerk account 25000 varun manager sales 50000 amit manager account 47000 tarun peon sales 15000 deepak clerk sales 23000 sunil peon sales 13000 satvik 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 45000 sunil clerk account 25000 varun manager sales 50000 amit manager account 47000 tarun peon sales 15000 deepak clerk sales 23000 sunil peon sales 13000 satvik director purchase 80000>

Im obigen Beispiel ist kein Muster angegeben. Die Aktionen sind also auf alle Zeilen anwendbar. Die Aktion „Drucken ohne Argument“ druckt standardmäßig die gesamte Zeile, sodass alle Zeilen der Datei ohne Fehler gedruckt werden.

2. Drucken Sie die Linien aus, die dem vorgegebenen Muster entsprechen.

$ awk '/manager/ {print}' employee.txt>

Ausgabe:

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

Im obigen Beispiel gibt der Befehl awk die gesamte Zeile aus, die mit „manager“ übereinstimmt.

3. Eine Zeile in Felder aufteilen: Für jeden Datensatz, d. h. Zeile, teilt der Befehl awk standardmäßig den durch Leerzeichen getrennten Datensatz auf und speichert ihn in den $n-Variablen. Wenn die Zeile 4 Wörter enthält, wird sie in $1, $2, $3 bzw. $4 gespeichert. Außerdem steht $0 für die gesamte Zeile.

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

Ausgabe:

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

Im obigen Beispiel stehen $1 und $4 für die Felder „Name“ und „Gehalt“.

Integrierte Variablen in Awk

Zu den integrierten Variablen von Awk gehören die Feldvariablen – $1, $2, $3 usw. ($0 ist die gesamte Zeile) –, die eine Textzeile in einzelne Wörter oder Teile, sogenannte Felder, aufteilen.

    NR: Der NR-Befehl führt eine aktuelle Zählung der Anzahl der Eingabedatensätze. Denken Sie daran, dass Datensätze normalerweise Zeilen sind. Der Befehl Awk führt die Muster-/Aktionsanweisungen einmal für jeden Datensatz in einer Datei aus. NF: Der NF-Befehl zählt die Anzahl der Felder im aktuellen Eingabedatensatz. FS: Der FS-Befehl 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: Der RS-Befehl speichert das aktuelle Datensatztrennzeichen. Da eine Eingabezeile standardmäßig der Eingabedatensatz ist, ist das Standardtrennzeichen für Datensätze ein Zeilenumbruch. OFS: Der OFS-Befehl speichert das Ausgabefeldtrennzeichen, das die Felder trennt, wenn Awk sie druckt. Der Standardwert ist ein Leerzeichen. Immer wenn print mehrere durch Kommas getrennte Parameter enthält, wird der Wert von OFS zwischen den einzelnen Parametern gedruckt. ORS: Der ORS-Befehl speichert das Ausgabedatensatztrennzeichen, das die Ausgabezeilen trennt, wenn Awk sie druckt. Der Standardwert ist ein Zeilenumbruchzeichen. print gibt den Inhalt von ORS am Ende dessen, was zum Drucken gegeben wird, automatisch aus.

Beispiele:

Verwendung integrierter NR-Variablen (Zeilennummer anzeigen)

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

Ausgabe:

1 ajay manager account 45000 2 sunil clerk account 25000 3 varun manager sales 50000 4 amit manager account 47000 5 tarun peon sales 15000 6 deepak clerk sales 23000 7 sunil peon sales 13000 8 satvik director purchase 80000>

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

Verwendung integrierter NF-Variablen (Letztes Feld anzeigen)

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

Ausgabe:

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

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

Eine andere Verwendung von integrierten NR-Variablen (Anzeigezeile von 3 bis 6)

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

Ausgabe:

3 varun manager sales 50000 4 amit manager account 47000 5 tarun peon sales 15000 6 deepak clerk sales 23000>

Mehr Beispiele

Für die angegebene Textdatei:

$cat>geeksforgeeks.txt A B C Tarun A12 1 Man B6 2 Praveen M42 3>

1) So drucken Sie das erste Element zusammen mit der Zeilennummer (NR), getrennt durch –, aus jeder Zeile in geeksforgeeks.txt:

$ awk '{print NR '- ' $1 }' geeksforgeeks.txt>
1 - A 2 - Tarun 3 – Manav 4 - Praveen>

2) So geben Sie die zweite Spalte/das zweite Element aus geeksforgeeks.txt zurück:

Die Frage sollte lauten: – So geben Sie die zweite Spalte/das zweite Element aus geeksforgeeks.txt zurück:

$ awk '{print $2}' geeksforgeeks.txt>
B A12 B6 M42>

3) Um jede nicht leere Zeile auszudrucken, falls vorhanden

$ awk 'NF <0' geeksforgeeks.txt>

Hier sollte NF 0 sein, nicht kleiner als und der Benutzer muss auch die Zeilennummer drucken:

Richtige Antwort: awk ‚NF == 0 {print NR}‘ geeksforgeeks.txt

ODER

awk ‚NF <= 0 {print NR}‘ geeksforgeeks.txt

0>

4) So ermitteln Sie die Länge der längsten Zeile in der Datei:

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

5) So zählen Sie die 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 1 Praveen M42 3>

7) So suchen/überprüfen Sie eine beliebige Zeichenfolge in einer bestimmten Spalte:

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

8) Um die Quadrate der ersten Zahlen von 1 bis n auszudrucken, sagen wir 6:

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


) } END { print max }' geeksforgeeks.txt>
13>

5) So zählen Sie die Zeilen in einer Datei:

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

6) Drucken von Zeilen mit mehr als 10 Zeichen:

$ awk 'length(

Awk ist eine Skriptsprache, die zum Bearbeiten von Daten und zum Erstellen von Berichten verwendet wird. Die Befehlsprogrammiersprache awk erfordert keine Kompilierung und ermöglicht dem Benutzer die Verwendung von Variablen, numerischen Funktionen, Zeichenfolgenfunktionen und logischen Operatoren.

Awk ist ein Dienstprogramm, das es einem Programmierer ermöglicht, kleine, aber effektive Programme in Form von Anweisungen zu schreiben, 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 eines Dokuments gefunden wird Linie. Awk wird hauptsächlich zum Scannen und Verarbeiten von Mustern verwendet. Es durchsucht eine oder mehrere Dateien, um festzustellen, ob sie Zeilen enthalten, die mit den angegebenen Mustern übereinstimmen, und führt dann die zugehörigen Aktionen aus.

Awk ist die Abkürzung der Namen der Entwickler – 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 auf
(c) Vergleicht Eingabezeilen/-felder mit Muster
(d) Führt Aktionen für übereinstimmende Zeilen aus

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

3. Programmierkonstrukte:
(a) Ausgabezeilen formatieren
(b) Arithmetische und String-Operationen
(c) Bedingungen und Schleifen

Syntax:

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

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>

Beispielbefehle

Beispiel:

Betrachten Sie die folgende Textdatei als Eingabedatei für alle unten aufgeführten Fälle:

$cat>mitarbeiter.txt>
ajay manager account 45000 sunil clerk account 25000 varun manager sales 50000 amit manager account 47000 tarun peon sales 15000 deepak clerk sales 23000 sunil peon sales 13000 satvik 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 45000 sunil clerk account 25000 varun manager sales 50000 amit manager account 47000 tarun peon sales 15000 deepak clerk sales 23000 sunil peon sales 13000 satvik director purchase 80000>

Im obigen Beispiel ist kein Muster angegeben. Die Aktionen sind also auf alle Zeilen anwendbar. Die Aktion „Drucken ohne Argument“ druckt standardmäßig die gesamte Zeile, sodass alle Zeilen der Datei ohne Fehler gedruckt werden.

2. Drucken Sie die Linien aus, die dem vorgegebenen Muster entsprechen.

$ awk '/manager/ {print}' employee.txt>

Ausgabe:

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

Im obigen Beispiel gibt der Befehl awk die gesamte Zeile aus, die mit „manager“ übereinstimmt.

3. Eine Zeile in Felder aufteilen: Für jeden Datensatz, d. h. Zeile, teilt der Befehl awk standardmäßig den durch Leerzeichen getrennten Datensatz auf und speichert ihn in den $n-Variablen. Wenn die Zeile 4 Wörter enthält, wird sie in $1, $2, $3 bzw. $4 gespeichert. Außerdem steht $0 für die gesamte Zeile.

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

Ausgabe:

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

Im obigen Beispiel stehen $1 und $4 für die Felder „Name“ und „Gehalt“.

Integrierte Variablen in Awk

Zu den integrierten Variablen von Awk gehören die Feldvariablen – $1, $2, $3 usw. ($0 ist die gesamte Zeile) –, die eine Textzeile in einzelne Wörter oder Teile, sogenannte Felder, aufteilen.

    NR: Der NR-Befehl führt eine aktuelle Zählung der Anzahl der Eingabedatensätze. Denken Sie daran, dass Datensätze normalerweise Zeilen sind. Der Befehl Awk führt die Muster-/Aktionsanweisungen einmal für jeden Datensatz in einer Datei aus. NF: Der NF-Befehl zählt die Anzahl der Felder im aktuellen Eingabedatensatz. FS: Der FS-Befehl 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: Der RS-Befehl speichert das aktuelle Datensatztrennzeichen. Da eine Eingabezeile standardmäßig der Eingabedatensatz ist, ist das Standardtrennzeichen für Datensätze ein Zeilenumbruch. OFS: Der OFS-Befehl speichert das Ausgabefeldtrennzeichen, das die Felder trennt, wenn Awk sie druckt. Der Standardwert ist ein Leerzeichen. Immer wenn print mehrere durch Kommas getrennte Parameter enthält, wird der Wert von OFS zwischen den einzelnen Parametern gedruckt. ORS: Der ORS-Befehl speichert das Ausgabedatensatztrennzeichen, das die Ausgabezeilen trennt, wenn Awk sie druckt. Der Standardwert ist ein Zeilenumbruchzeichen. print gibt den Inhalt von ORS am Ende dessen, was zum Drucken gegeben wird, automatisch aus.

Beispiele:

Verwendung integrierter NR-Variablen (Zeilennummer anzeigen)

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

Ausgabe:

1 ajay manager account 45000 2 sunil clerk account 25000 3 varun manager sales 50000 4 amit manager account 47000 5 tarun peon sales 15000 6 deepak clerk sales 23000 7 sunil peon sales 13000 8 satvik director purchase 80000>

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

Verwendung integrierter NF-Variablen (Letztes Feld anzeigen)

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

Ausgabe:

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

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

Eine andere Verwendung von integrierten NR-Variablen (Anzeigezeile von 3 bis 6)

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

Ausgabe:

3 varun manager sales 50000 4 amit manager account 47000 5 tarun peon sales 15000 6 deepak clerk sales 23000>

Mehr Beispiele

Für die angegebene Textdatei:

$cat>geeksforgeeks.txt A B C Tarun A12 1 Man B6 2 Praveen M42 3>

1) So drucken Sie das erste Element zusammen mit der Zeilennummer (NR), getrennt durch –, aus jeder Zeile in geeksforgeeks.txt:

$ awk '{print NR '- ' $1 }' geeksforgeeks.txt>
1 - A 2 - Tarun 3 – Manav 4 - Praveen>

2) So geben Sie die zweite Spalte/das zweite Element aus geeksforgeeks.txt zurück:

Die Frage sollte lauten: – So geben Sie die zweite Spalte/das zweite Element aus geeksforgeeks.txt zurück:

$ awk '{print $2}' geeksforgeeks.txt>
B A12 B6 M42>

3) Um jede nicht leere Zeile auszudrucken, falls vorhanden

$ awk 'NF <0' geeksforgeeks.txt>

Hier sollte NF 0 sein, nicht kleiner als und der Benutzer muss auch die Zeilennummer drucken:

Richtige Antwort: awk ‚NF == 0 {print NR}‘ geeksforgeeks.txt

ODER

awk ‚NF <= 0 {print NR}‘ geeksforgeeks.txt

0>

4) So ermitteln Sie die Länge der längsten Zeile in der Datei:

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

5) So zählen Sie die 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 1 Praveen M42 3>

7) So suchen/überprüfen Sie eine beliebige Zeichenfolge in einer bestimmten Spalte:

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

8) Um die Quadrate der ersten Zahlen von 1 bis n auszudrucken, sagen wir 6:

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


)>10' geeksforgeeks.txt>
Tarun A12 1 Praveen M42 3>

7) So suchen/überprüfen Sie eine beliebige Zeichenfolge in einer bestimmten Spalte:

$ awk '{ if( == 'B6') print 

Awk ist eine Skriptsprache, die zum Bearbeiten von Daten und zum Erstellen von Berichten verwendet wird. Die Befehlsprogrammiersprache awk erfordert keine Kompilierung und ermöglicht dem Benutzer die Verwendung von Variablen, numerischen Funktionen, Zeichenfolgenfunktionen und logischen Operatoren.

Awk ist ein Dienstprogramm, das es einem Programmierer ermöglicht, kleine, aber effektive Programme in Form von Anweisungen zu schreiben, 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 eines Dokuments gefunden wird Linie. Awk wird hauptsächlich zum Scannen und Verarbeiten von Mustern verwendet. Es durchsucht eine oder mehrere Dateien, um festzustellen, ob sie Zeilen enthalten, die mit den angegebenen Mustern übereinstimmen, und führt dann die zugehörigen Aktionen aus.

Awk ist die Abkürzung der Namen der Entwickler – 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 auf
(c) Vergleicht Eingabezeilen/-felder mit Muster
(d) Führt Aktionen für übereinstimmende Zeilen aus

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

3. Programmierkonstrukte:
(a) Ausgabezeilen formatieren
(b) Arithmetische und String-Operationen
(c) Bedingungen und Schleifen

Syntax:

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

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>

Beispielbefehle

Beispiel:

Betrachten Sie die folgende Textdatei als Eingabedatei für alle unten aufgeführten Fälle:

$cat>mitarbeiter.txt>
ajay manager account 45000 sunil clerk account 25000 varun manager sales 50000 amit manager account 47000 tarun peon sales 15000 deepak clerk sales 23000 sunil peon sales 13000 satvik 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 45000 sunil clerk account 25000 varun manager sales 50000 amit manager account 47000 tarun peon sales 15000 deepak clerk sales 23000 sunil peon sales 13000 satvik director purchase 80000>

Im obigen Beispiel ist kein Muster angegeben. Die Aktionen sind also auf alle Zeilen anwendbar. Die Aktion „Drucken ohne Argument“ druckt standardmäßig die gesamte Zeile, sodass alle Zeilen der Datei ohne Fehler gedruckt werden.

2. Drucken Sie die Linien aus, die dem vorgegebenen Muster entsprechen.

$ awk '/manager/ {print}' employee.txt>

Ausgabe:

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

Im obigen Beispiel gibt der Befehl awk die gesamte Zeile aus, die mit „manager“ übereinstimmt.

3. Eine Zeile in Felder aufteilen: Für jeden Datensatz, d. h. Zeile, teilt der Befehl awk standardmäßig den durch Leerzeichen getrennten Datensatz auf und speichert ihn in den $n-Variablen. Wenn die Zeile 4 Wörter enthält, wird sie in $1, $2, $3 bzw. $4 gespeichert. Außerdem steht $0 für die gesamte Zeile.

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

Ausgabe:

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

Im obigen Beispiel stehen $1 und $4 für die Felder „Name“ und „Gehalt“.

Integrierte Variablen in Awk

Zu den integrierten Variablen von Awk gehören die Feldvariablen – $1, $2, $3 usw. ($0 ist die gesamte Zeile) –, die eine Textzeile in einzelne Wörter oder Teile, sogenannte Felder, aufteilen.

    NR: Der NR-Befehl führt eine aktuelle Zählung der Anzahl der Eingabedatensätze. Denken Sie daran, dass Datensätze normalerweise Zeilen sind. Der Befehl Awk führt die Muster-/Aktionsanweisungen einmal für jeden Datensatz in einer Datei aus. NF: Der NF-Befehl zählt die Anzahl der Felder im aktuellen Eingabedatensatz. FS: Der FS-Befehl 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: Der RS-Befehl speichert das aktuelle Datensatztrennzeichen. Da eine Eingabezeile standardmäßig der Eingabedatensatz ist, ist das Standardtrennzeichen für Datensätze ein Zeilenumbruch. OFS: Der OFS-Befehl speichert das Ausgabefeldtrennzeichen, das die Felder trennt, wenn Awk sie druckt. Der Standardwert ist ein Leerzeichen. Immer wenn print mehrere durch Kommas getrennte Parameter enthält, wird der Wert von OFS zwischen den einzelnen Parametern gedruckt. ORS: Der ORS-Befehl speichert das Ausgabedatensatztrennzeichen, das die Ausgabezeilen trennt, wenn Awk sie druckt. Der Standardwert ist ein Zeilenumbruchzeichen. print gibt den Inhalt von ORS am Ende dessen, was zum Drucken gegeben wird, automatisch aus.

Beispiele:

Verwendung integrierter NR-Variablen (Zeilennummer anzeigen)

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

Ausgabe:

1 ajay manager account 45000 2 sunil clerk account 25000 3 varun manager sales 50000 4 amit manager account 47000 5 tarun peon sales 15000 6 deepak clerk sales 23000 7 sunil peon sales 13000 8 satvik director purchase 80000>

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

Verwendung integrierter NF-Variablen (Letztes Feld anzeigen)

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

Ausgabe:

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

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

Eine andere Verwendung von integrierten NR-Variablen (Anzeigezeile von 3 bis 6)

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

Ausgabe:

3 varun manager sales 50000 4 amit manager account 47000 5 tarun peon sales 15000 6 deepak clerk sales 23000>

Mehr Beispiele

Für die angegebene Textdatei:

$cat>geeksforgeeks.txt A B C Tarun A12 1 Man B6 2 Praveen M42 3>

1) So drucken Sie das erste Element zusammen mit der Zeilennummer (NR), getrennt durch –, aus jeder Zeile in geeksforgeeks.txt:

$ awk '{print NR '- ' $1 }' geeksforgeeks.txt>
1 - A 2 - Tarun 3 – Manav 4 - Praveen>

2) So geben Sie die zweite Spalte/das zweite Element aus geeksforgeeks.txt zurück:

Die Frage sollte lauten: – So geben Sie die zweite Spalte/das zweite Element aus geeksforgeeks.txt zurück:

$ awk '{print $2}' geeksforgeeks.txt>
B A12 B6 M42>

3) Um jede nicht leere Zeile auszudrucken, falls vorhanden

$ awk 'NF <0' geeksforgeeks.txt>

Hier sollte NF 0 sein, nicht kleiner als und der Benutzer muss auch die Zeilennummer drucken:

Richtige Antwort: awk ‚NF == 0 {print NR}‘ geeksforgeeks.txt

ODER

awk ‚NF <= 0 {print NR}‘ geeksforgeeks.txt

0>

4) So ermitteln Sie die Länge der längsten Zeile in der Datei:

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

5) So zählen Sie die 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 1 Praveen M42 3>

7) So suchen/überprüfen Sie eine beliebige Zeichenfolge in einer bestimmten Spalte:

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

8) Um die Quadrate der ersten Zahlen von 1 bis n auszudrucken, sagen wir 6:

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


;}' geeksforgeeks.txt>

8) Um die Quadrate der ersten Zahlen von 1 bis n auszudrucken, sagen wir 6:

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