Gawk/Programmaufbau: Unterschied zwischen den Versionen

Aus Foxwiki
K Dirkwagner verschob die Seite Linux:Befehl:gawk:Programmaufbau nach Gawk:Programmaufbau, ohne dabei eine Weiterleitung anzulegen: Textersetzung - „Linux:Befehl:“ durch „“
Keine Bearbeitungszusammenfassung
 
(5 dazwischenliegende Versionen desselben Benutzers werden nicht angezeigt)
Zeile 1: Zeile 1:
{{DISPLAYTITLE:gawk/Programmaufbau}}
== Allgemeiner Programmaufbau ==
== Allgemeiner Programmaufbau ==
[[Image:Grafik4.png|alt="Abbildung 1: Die 3 Bestandteile eines Awk-Programms"]]
<nowiki> [[Image:Grafik4.png|alt="Abbildung 1: Die 3 Bestandteile eines Awk-Programms"]] </nowiki>


Ein Awk-Programm lässt sich in '''drei wesentliche Bestandteile '''zerlegen:  
Ein Awk-Programm lässt sich in '''drei wesentliche Bestandteile '''zerlegen:  
Zeile 24: Zeile 26:
* Die '''Muster '''können reguläre Ausdrücke oder Variablenvergleiche sein.* Sie werden mit der aktuellen Eingabezeile verglichen, woraufhin bei Übereinstimmung der Kommandoblock betreten wird.
* Die '''Muster '''können reguläre Ausdrücke oder Variablenvergleiche sein.* Sie werden mit der aktuellen Eingabezeile verglichen, woraufhin bei Übereinstimmung der Kommandoblock betreten wird.
* Fehlt das Muster, wird der Kommandoblock auf jeden Fall ausgeführt.
* Fehlt das Muster, wird der Kommandoblock auf jeden Fall ausgeführt.
* Zwei '''spezielle Muster '''kennzeichnen die anfänglich bzw.  
* Zwei '''spezielle Muster '''kennzeichnen die anfänglich bzw.&nbsp;
* abschließend auszuführenden Anweisungen.* Die Kommandos hinter dem Muster '''BEGIN '''werden zumeist zu Variableninitialisierungen oder einführenden Ausgaben genutzt.
* abschließend auszuführenden Anweisungen.* Die Kommandos hinter dem Muster '''BEGIN '''werden zumeist zu Variableninitialisierungen oder einführenden Ausgaben genutzt.
* Dementsprechend ermöglicht das Muster '''END '''finale Aktionen, wie die Ausgabe von Ergebnissen.
* Dementsprechend ermöglicht das Muster '''END '''finale Aktionen, wie die Ausgabe von Ergebnissen.
Zeile 38: Zeile 40:
  END { print "Ergebnis: " zaehler; }
  END { print "Ergebnis: " zaehler; }
* Wie Sie das Programm starten können? Nach Studium des folgenden Abschnitts werden Sie es wissen...
* Wie Sie das Programm starten können? Nach Studium des folgenden Abschnitts werden Sie es wissen...
[[Kategorie:Gawk]]
{{DEFAULTSORT:gawk:Programmaufbau}}

Aktuelle Version vom 30. März 2024, 00:52 Uhr


Allgemeiner Programmaufbau

[[Image:Grafik4.png|alt="Abbildung 1: Die 3 Bestandteile eines Awk-Programms"]]

Ein Awk-Programm lässt sich in drei wesentliche Bestandteile zerlegen:

  1. Eine optionale Anweisung, die einmalig vor der Verarbeitung der Eingabedaten durchlaufen wird
  2. Ein Hauptprogramm, bestehend aus beliebig vielen Anweisungen, das für jede Eingabezeile erneut ausgeführt wird, es sei denn, eine bestimmte Bedingung führt zum vorzeitigen Abbruch
  3. Eine optionale Anweisung, die einmalig nach der Verarbeitung der Eingabedaten durchlaufen wird

Eine Anweisung besteht wiederum aus einem optionalen Muster, gefolgt von einem Kommandoblock, der in geschweifte Klammern eingeschlossen wird.

/Muster/ { Kommando [; Kommando] }
  • Der Kommandoblock darf durchaus auf mehrere Zeilen verteilt werden.

Er endet mit der abschließenden geschweiften Klammer, sodass die folgende Aufteilung legitim und aus Gründen der Übersichtlichkeit bei größeren Kommandoblöcken zu empfehlen ist:

/Muster/ {
Kommando;
Kommando;
...
}

Semikola und Zeilenumbrüche trennen Kommandos, sodass dem letzten Kommando auf einer Zeile kein Semikolon folgen muss.

  • Da es aber auch nichts schadet, werden wir es in den weiteren Beispielen verwenden.
  • Die Muster können reguläre Ausdrücke oder Variablenvergleiche sein.* Sie werden mit der aktuellen Eingabezeile verglichen, woraufhin bei Übereinstimmung der Kommandoblock betreten wird.
  • Fehlt das Muster, wird der Kommandoblock auf jeden Fall ausgeführt.
  • Zwei spezielle Muster kennzeichnen die anfänglich bzw. 
  • abschließend auszuführenden Anweisungen.* Die Kommandos hinter dem Muster BEGIN werden zumeist zu Variableninitialisierungen oder einführenden Ausgaben genutzt.
  • Dementsprechend ermöglicht das Muster END finale Aktionen, wie die Ausgabe von Ergebnissen.

Mit diesen Vorkenntnissen sollte die Funktionsweise des ersten Programms leicht nachvollziehbar sein; es zählt einfach nur die Zeilen der Eingabe und gibt das Resultat aus:

BEGIN {
 print "Zählen von Eingabezeilen";
 zaehler=0;
 }

 { zaehler++; }

END { print "Ergebnis: " zaehler; }
  • Wie Sie das Programm starten können? Nach Studium des folgenden Abschnitts werden Sie es wissen...