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

4 Beispiele für Awk-If-Anweisungen ( if, if else, if else if, :? )

Dieser Artikel ist Teil der fortlaufenden Reihe von Awk-Tutorial-Beispielen. In unseren früheren awk-Artikeln haben wir über awk print, benutzerdefinierte awk-Variablen, eingebaute awk-Variablen und awk-Operatoren gesprochen.

Lassen Sie uns in diesem awk-Tutorial bedingte awk-if-Anweisungen überprüfen mit praktischen Beispielen.

Awk unterstützt viele bedingte Anweisungen, um den Programmablauf zu steuern. Der größte Teil der Awk-Syntax für bedingte Anweisungen sieht aus wie die Programmiersprache „C“.

Normalerweise überprüft die bedingte Anweisung die Bedingung, bevor eine Aktion ausgeführt wird. Wenn die Bedingung wahr ist, werden Aktionen ausgeführt. Eine ähnliche Aktion kann ausgeführt werden, wenn die Bedingung falsch ist.

Die bedingte Anweisung beginnt mit dem Schlüsselwort „if“. Awk unterstützt zwei verschiedene Arten von if-Anweisungen.

  1. Awk Einfache If-Anweisung
  2. Awk If-Else-Anweisung
  3. Awk If-ElseIf-Leiter

Awk Einfache If-Anweisung

Einzelaktion: Eine einfache If-Anweisung wird verwendet, um die Bedingungen zu überprüfen. Wenn die Bedingung wahr zurückgibt, führt sie die entsprechende(n) Aktion(en) aus.

Syntax:
if (conditional-expression)
	action
  • if ist ein Schlüsselwort
  • conditional-expression – Ausdruck um Bedingungen zu prüfen
  • action – jede awk-Anweisung, um eine Aktion auszuführen.

Mehrfachaktion: Wenn der bedingte Ausdruck wahr zurückgibt, wird die Aktion ausgeführt. Wenn mehr als eine Aktion ausgeführt werden muss, sollten die Aktionen in geschweiften Klammern eingeschlossen und wie unten gezeigt durch eine neue Zeile oder ein Semikolon getrennt werden.

Syntax:
if (conditional-expression)
{
	action1;
	action2;
}

Wenn die Bedingung wahr ist, werden alle in geschweiften Klammern eingeschlossenen Aktionen in der angegebenen Reihenfolge ausgeführt. Nachdem alle Aktionen ausgeführt wurden, fährt es mit der Ausführung der nächsten Anweisungen fort.

Awk-If-Else-Anweisung

In der obigen einfachen awk If-Anweisung gibt es keine Reihe von Aktionen für den Fall, dass die Bedingung falsch ist. In der awk If Else-Anweisung können Sie die Liste der auszuführenden Aktionen angeben, wenn die Bedingung falsch ist. Wenn die Bedingung wahr zurückgibt, wird Aktion 1 ausgeführt, wenn die Bedingung falsch ist, wird Aktion 2 ausgeführt.

Syntax:
if (conditional-expression)
	action1
else
	action2

Awk hat auch einen bedingten Operator, d. h. einen ternären Operator ( ?:) dessen Funktion der awk If Else-Anweisung ähnelt. Wenn der Bedingungsausdruck wahr ist, wird Aktion1 ausgeführt, und wenn der Bedingungsausdruck falsch ist, wird Aktion2 ausgeführt.

Syntax:

conditional-expression ? action1 : action2 ;

Awk If Else If-Leiter

if(conditional-expression1)
	action1;
else if(conditional-expression2)
	action2;
else if(conditional-expression3)
	action3;
	.
	.
else
	action n;
  • Wenn Bedingungsausdruck1 wahr ist, wird Aktion1 ausgeführt.
  • Wenn Bedingungsausdruck1 falsch ist, wird Bedingungsausdruck2 geprüft, ist er wahr, wird Aktion2 ausgeführt und so weiter gemacht. Der letzte Else-Teil wird ausgeführt, wenn keiner der Bedingungsausdrücke wahr ist.

Lassen Sie uns nun die Beispiel-Eingabedatei erstellen, die die Schülernoten enthält.

$cat student-marks
Jones 2143 78 84 77
Gondrol 2321 56 58 45
RinRao 2122 38 37
Edwin 2537 87 97 95
Dayan 2415 30 47

1. Awk If Beispiel:Überprüfen Sie, ob alle Markierungen vorhanden sind

$ awk '{
if ($3 =="" || $4 == "" || $5 == "")
	print "Some score for the student",$1,"is missing";'
}' student-marks
Some score for the student RinRao is missing
Some score for the student Dayan is missing

$3, $4 und $5 sind Testergebnisse des Schülers. Wenn der Testwert gleich leer ist, wird die Nachricht ausgegeben. || Der Bediener muss überprüfen, ob eine der Markierungen nicht vorhanden ist, er sollte warnen.

2. Awk If Else Beispiel:Generieren Sie einen Pass/Fail-Bericht basierend auf den Schülernoten in jedem Fach

$ awk '{
if ($3 >=35 && $4 >= 35 && $5 >= 35)
	print $0,"=>","Pass";
else
	print $0,"=>","Fail";
}' student-marks
Jones 2143 78 84 77 => Pass
Gondrol 2321 56 58 45 => Pass
RinRao 2122 38 37 => Fail
Edwin 2537 87 97 95 => Pass
Dayan 2415 30 47 => Fail

Die Bedingung für das Bestehen ist, dass alle Testergebnisse größer oder gleich 35 sein sollten. Wenn also alle Testergebnisse größer als 35 sind, werden die gesamte Zeile und die Zeichenfolge „Bestanden“ gedruckt, andernfalls, d. H. Auch wenn einer von das Testergebnis die Bedingung nicht erfüllt, wird die ganze Zeile gedruckt und die Zeichenfolge „Fail“ ausgegeben.

3. Awk If Else If Beispiel:Finden Sie den Durchschnitt und die Note für jeden Schüler

$ cat grade.awk
{
total=$3+$4+$5;
avg=total/3;
if ( avg >= 90 ) grade="A";
else if ( avg >= 80) grade ="B";
else if (avg >= 70) grade ="C";
else grade="D";

print $0,"=>",grade;
}
$ awk -f grade.awk student-marks
Jones 2143 78 84 77 => C
Gondrol 2321 56 58 45 => D
RinRao 2122 38 37 => D
Edwin 2537 87 97 95 => A
Dayan 2415 30 47 => D

Im obigen awk-Skript enthält die Variable „avg“ den Durchschnitt der drei Testergebnisse. Wenn der Durchschnitt größer oder gleich 90 ist, ist die Note A, oder wenn der Durchschnitt größer oder gleich 80 ist, ist die Note B, wenn der Durchschnitt größer oder gleich 70 ist, ist die Note C. Or andernfalls ist die Note D.

4. Awk Ternary ( ?:) Beispiel:Verkette alle 3 Eingabezeilen mit einem Komma.

$ awk 'ORS=NR%3?",":"\n"' student-marks
Jones 2143 78 84 77,Gondrol 2321 56 58 45,RinRao 2122 38 37
Edwin 2537 87 97 95,Dayan 2415 30 47,

Wir haben bereits über die eingebaute Variable awk ORS gesprochen. Diese Variable wird nach jeder ausgegebenen Zeile angehängt. In diesem Beispiel wird es in jeder 3. Zeile von einem Komma zu einem Zeilenumbruch geändert. Für Zeile 1, 2 ist es ein Komma, für Zeile 3 ein Zeilenumbruch, für Zeile 4, 5 ein Komma, für Zeile 6 ein Zeilenumbruch usw.

Empfohlene Lektüre

Sed- und Awk-101-Hacks, von Ramesh Natarajan . Ich verbringe mehrere Stunden am Tag in einer UNIX/Linux-Umgebung mit dem Umgang mit Textdateien (Daten-, Konfigurations- und Protokolldateien). Ich verwende Sed und Awk für alle meine Textbearbeitungsarbeiten. Basierend auf meiner Sed- und Awk-Erfahrung habe ich das Sed and Awk 101 Hacks eBook geschrieben, das 101 praktische Beispiele zu verschiedenen erweiterten Funktionen von Sed und Awk enthält, die Ihr UNIX / Linux-Leben verbessern werden. Auch wenn Sie Sed und Awk seit mehreren Jahren verwenden und dieses Buch noch nicht gelesen haben, tun Sie sich bitte einen Gefallen und lesen Sie dieses Buch. Sie werden von den Möglichkeiten der Dienstprogramme Sed und Awk begeistert sein.


Linux
  1. So verwenden Sie die Bedingungsanweisung if else in Bash-Skript

  2. Bash-If-Else-Anweisung mit Beispielen

  3. Awk-Einführungstutorial – 7 Awk-Druckbeispiele

  4. AWK-Arrays erklärt mit 5 praktischen Beispielen

  5. 4 Beispiele für Bash-If-Anweisungen ( If then fi, If then else fi, If elif else fi, Nested if )

Bash if..else-Anweisung

Python if..else-Anweisung

Linux-awk-Befehl mit 10 Beispielen

10 fantastische Awk-Befehlsbeispiele in Linux

Bash If Else Syntax mit Beispielen

Regex-Tutorial für Linux-Beispiele (Sed &AWK).