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

Linux/UNIX Awk Command Tutorial mit Beispielen

Awk ist eine Skriptsprache, die zum Verarbeiten oder Analysieren von Textdateien verwendet wird. Oder wir können sagen, dass der Befehl awk hauptsächlich zum Gruppieren von Daten basierend auf einer Spalte oder einem Feld oder auf einer Reihe von Spalten verwendet wird. Hauptsächlich wird es verwendet, um Daten auf nützliche Weise zu melden. Es verwendet auch Begin- und End-Blöcke, um die Daten zu verarbeiten.

AWK  steht für „Aho, Weinberger und Kernighan“

In diesem Tutorial lernen wir den awk-Befehl anhand praktischer Beispiele kennen.

Syntax von awk

# awk ‘Muster {Aktion}’ Eingabedatei> Ausgabedatei

Nehmen wir eine Eingabedatei mit den folgenden Daten

$ cat  awk_file
Name,Marks,Max Marks
Ram,200,1000
Shyam,500,1000
Ghyansham,1000
Abharam,800,1000
Hari,600,1000
Ram,400,1000

Lassen Sie uns nun tief in praktische Beispiele für den awk-Befehl eintauchen.

1) Alle Zeilen aus einer Datei drucken

Standardmäßig druckt awk alle Zeilen einer Datei. Um also jede Zeile der oben erstellten Datei zu drucken, verwenden Sie den folgenden Befehl:

$ awk '{print;}' awk_file
Name,Marks,Max Marks
Ram,200,1000
Shyam,500,1000
Ghyansham,1000
Abharam,800,1000
Hari,600,1000
Ram,400,1000

Hinweis: Im awk-Befehl wird ‘{print;}’ verwendet, um alle Felder zusammen mit ihren Werten auszudrucken.

2) Nur bestimmte Felder wie 2. und 3. drucken

Im awk-Befehl verwenden wir das Symbol $ (Dollar), gefolgt von der Feldnummer, um Feldwerte zu drucken. Im folgenden Beispiel drucken wir Feld 2 (d. h. Marks) und Feld 3 (d. h. Max Marks)

$ awk -F "," '{print $2, $3;}' awk_file
Marks Max Marks
200 1000
500 1000
1000
800 1000
600 1000
400 1000

Im obigen Befehl haben wir die Option  -F „,“ verwendet, die angibt, dass das Komma (,) das Feldtrennzeichen in der Datei ist.

3) Drucken Sie die Linien, die dem Muster entsprechen

Ich möchte die Zeilen drucken, die das Wort „Hari &Ram“ enthalten, run

$ awk '/Hari|Ram/' awk_file
Ram,200,1000
Hari,600,1000
Ram,400,1000

4) Wie finden wir eindeutige Werte in der ersten Spalte von name

Um eindeutige Werte aus der ersten Spalte zu drucken, führen Sie den folgenden awk-Befehl

aus
$ awk -F, '{a[$1];}END{for (i in a)print i;}' awk_file
Abharam
Hari
Name
Ghyansham
Ram
Shyam

5) So finden Sie die Summe der Dateneingabe in einer bestimmten Spalte

Im awk-Befehl ist es auch möglich, einige arithmetische Operationen basierend auf der Suche durchzuführen, die Syntax ist unten gezeigt

$ awk -F, ‘$1==”Element1″{x+=$2;}END{print x}’ awk_file

Im folgenden Beispiel suchen wir nach Ram und fügen dann Werte des zweiten Felds für das Wort Ram hinzu.

$ awk -F, '$1=="Ram"{x+=$2;}END{print x}' awk_file
600

6)  So finden Sie die Summe aller Zahlen in einer Spalte

Im awk-Befehl können wir auch die Summe aller Zahlen in einer Spalte einer Datei berechnen. Im folgenden Beispiel berechnen wir die Summe aller Zahlen der 2. und 3. Spalte.

$ awk -F"," '{x+=$2}END{print x}' awk_file
3500
$ awk -F"," '{x+=$3}END{print x}' awk_file
5000

7) So finden Sie die Summe einzelner Gruppendatensätze

Wenn wir beispielsweise die erste Spalte betrachten, können wir die Summierung für die erste Spalte basierend auf den Elementen durchführen

$ awk -F, '{a[$1]+=$2;}END{for(i in a)print i", "a[i];}' awk_file
Abharam, 800
Hari, 600
Name, 0
Ghyansham, 1000
Ram, 600
Shyam, 500

8) Ermitteln Sie die Summe aller Einträge bestimmter Spalten und hängen Sie sie an das Ende der Datei an

Wie wir bereits besprochen haben, kann der awk-Befehl die Summe aller Zahlen einer Spalte berechnen. Um also die Summe von Spalte 2 und Spalte 3 am Ende der Datei anzuhängen, führen Sie

aus
$ awk -F"," '{x+=$2;y+=$3;print}END{print "Total,"x,y}' awk_file
Name,Marks,Max Marks
Ram,200,1000
Shyam,500,1000
Ghyansham,1000
Abharam,800,1000
Hari,600,1000
Ram,400,1000
Total,3500 5000

9) So ermitteln Sie die Anzahl der Einträge für jede Spalte basierend auf der ersten Spalte

$ awk -F, '{a[$1]++;}END{for (i in a)print i, a[i];}' awk_file
Abharam 1
Hari 1
Name 1
Ghyansham 1
Ram 2
Shyam 1

10) So drucken Sie nur den ersten Datensatz jeder Gruppe

Um nur den ersten jeder Gruppe zu drucken, führen Sie den folgenden awk-Befehl

aus
$ awk -F, '!a[$1]++' awk_file
Name,Marks,Max Marks
Ram,200,1000
Shyam,500,1000
Ghyansham,1000
Abharam,800,1000
Hari,600,1000

AWK-Startblock

Die Syntax für den BEGIN-Block ist

$ awk ‘BEGIN{awk-Initialisierungscode}{tatsächlicher AWK-Code}’   Dateiname

Lassen Sie uns eine Datendatei mit den folgenden Inhalten erstellen

11)  So füllen Sie die einzelnen Spaltennamen zusammen mit den entsprechenden Daten aus

$ awk 'BEGIN{print "Names\ttotal\tPPT\tDoc\txls"}{printf "%-s\t%d\t%d\t%d\t%d\n", $1,$2,$3,$4,$5}' datafile

12) So ändern Sie das Feldtrennzeichen

Wie wir sehen können, ist Leerzeichen das Feldtrennzeichen in der Datendatei, im folgenden Beispiel ändern wir das Feldtrennzeichen von Leerzeichen in „|“

$ awk 'BEGIN{OFS="|"}{print $1,$2,$3,$4,$5}' datafile

Das ist alles aus diesem Tutorial, ich hoffe, Sie fanden es informativ. Bitte teilen Sie Ihr Feedback und Ihre Fragen im Kommentarbereich unten.


Linux
  1. Linux expand Command Tutorial für Anfänger (mit Beispielen)

  2. Linux yes Command Tutorial für Anfänger (mit Beispielen)

  3. Linux nproc Command Tutorial für Anfänger (mit Beispielen)

  4. Linux tac Command Tutorial für Anfänger (mit Beispielen)

  5. JQ-Befehl in Linux mit Beispielen

Linux test Command Tutorial für Anfänger (mit Beispielen)

Linux zforce Command Tutorial mit Beispielen

Linux tr Command Tutorial für Anfänger (mit Beispielen)

15 Linux-PS-Befehl mit Beispielen

Linux-awk-Befehl mit 10 Beispielen

Tutorial für Linux-Suchbefehle (mit Beispielen)