Unix-Linux, Eine Einführung von Wolfgang Paulina (de)
Unix-Linux, Eine Einführung von Wolfgang Paulina (de)
Unix-Linux, Eine Einführung von Wolfgang Paulina (de)
Erfolgreiche ePaper selbst erstellen
Machen Sie aus Ihren PDF Publikationen ein blätterbares Flipbook mit unserer einzigartigen Google optimierten e-Paper Software.
7. Textmusterverarbeitung mit awk 65<br />
7.2. Die Sprachelemente <strong>von</strong> awk<br />
Die Syntax <strong>von</strong> awk stimmt in vielen Punkten mit <strong>de</strong>r C-Syntax überein.<br />
Datentypen und Variable<br />
Es existieren numerische Daten und Zeichenkettendaten. Zeichenketten wer<strong>de</strong>n in Anführungsstriche gesetzt.<br />
Variable brauchen nicht <strong>de</strong>klariert wer<strong>de</strong>n, sie sind bei ihrer ersten Erwähnung im Programm implizit<br />
<strong>de</strong>klariert. Variablennamen beginnen grundsätzlich mit einem Buchstaben ( abc, e534, a[10] ).<br />
Neben <strong>de</strong>n frei <strong>de</strong>finierbaren Variablen gibt es einige eingebaute Variable.<br />
Statische eingebaute Variable:<br />
RS<br />
ORS<br />
FS<br />
OFS<br />
OFMT<br />
Trennzeichen für Eingabezeilen (LF)<br />
Trennzeichen für Ausgabezeilen (LF)<br />
Feldtrennzeichen für die Eingabe (SPACE, TAB)<br />
Feldtrennzeichen für die Ausgabe (SPACE, TAB)<br />
Steuerstring für die Ausgabe numerischer Werte<br />
Dynamische eingebaute Variable:<br />
NR<br />
NF<br />
FILENAME<br />
Number of Record, aktuelle Zeilennummer<br />
Number of Fields, aktuelle Feldanzahl <strong>de</strong>r Eingabezeile<br />
Name <strong>de</strong>r aktuellen Eingabedatei<br />
Operatoren und Ausdrücke<br />
Es gibt numerische und nichtnumerische Operationen. Das Ergebnis einer Operation ist abhängig vom<br />
Operator und <strong>de</strong>n Werten <strong>de</strong>r verwen<strong>de</strong>ten Operan<strong>de</strong>n. Der Typ <strong>de</strong>r Operation dient als primäres Entscheidungskriterium<br />
für die Wertermittlung.<br />
Als numerische Operatoren sind die Zeichen + - * / % ++ -- zugelassen. Klammerausdrücke<br />
sind erlaubt. Als nicht-numerische Operation ist die Verkettung <strong>de</strong>finiert.<br />
rechner> awk ’{print 3 + 4}’<br />
rechner> awk ’{print "3" + "4"}’<br />
rechner> awk ’{print 3 + 4"5"}’<br />
rechner> awk ’{print 3 + (4"5")}’<br />
ergibt 7, da numerische Operation<br />
ergibt ebenfalls 7, da die Operation numerisch<br />
ist<br />
Mischung <strong>von</strong> numerischer und nichtnumerischer<br />
Operation; die Verkettung<br />
wird zum Schluss ausgeführt; Ergebnis<br />
ist 75<br />
Ergebnis ist 48, da die Klammern die<br />
Auswertungsreihenfolge beeinflussen<br />
Als Vergleichsoperatoren sind dieselben Operatoren wie in <strong>de</strong>r Programmiersprache C gebräuchlich: ==<br />
!= < > = . Wenn die Vergleichsoperan<strong>de</strong>n unterschiedlichen Typs sind, wird <strong>de</strong>r numerische Operand<br />
als Zeichenkettentyp interpretiert. Vorsicht bei Zeichenkettenvergleichen: Die Werte wer<strong>de</strong>n linksbündig<br />
verglichen (d.h. ”12” < ”2” ist true). Verknüpfungen <strong>von</strong> Vergleichsoperationen erfolgen mit <strong>de</strong>n<br />
Operatoren ! (NOT), && (AND) und || (OR).