Awk: Übungen: Aktionen
Variablen und Operatoren
[Bearbeiten]Benutzerdefinierte Variablen und Operatorenpriorität
[Bearbeiten]Aufgabe | |||
---|---|---|---|
A10 |
Welche dieser Zeichenfolgen sind in awk-Skripten als Variablenbezeichner gültig?
|
|
|
A20 |
Gegeben ist die Anweisung awk ' BEGIN { x = 2 y = 3 z = 5 print x+(2*z)/x*2 print x^y^2 print (x^y)^2 print x&&5 print x||0 print !x*5 }' Welche Resultate werden durch die print-Anweisungen ausgegeben? |
|
|
A30 |
Gegeben ist die Anweisung awk ' BEGIN { x = 2 str = "e5" print str + x x = x "" print x+4 print (x str) + 1 print x "e3" + 1 }' Welche Resultate werden durch die print-Anweisungen ausgegeben? |
Feldvariablen
[Bearbeiten]Aufgabe | |||
---|---|---|---|
A40 |
Gegeben sei die Datei bsp mit dem Inhalt A 3 1 B 5 1 A x 0 Wie lauten die Resultate der Auswertung dieser Datei durch die folgenden Anweisungen?
|
Arrays
[Bearbeiten]Aufgabe | |||
---|---|---|---|
A50 |
Gegeben ist die das awk-Skript BEGIN { x["100"] = 25 x["200"] = 30 x["var"] = 49 print "x[1] = " x[1] print "x[100] = " x[100] print "x[\"200\"] = " x["200"] print "x[var] = " x[var] print "x[\"var\"] = " x["var"] x[100] = 99 print "x[\"100\"] = " x["100"] } Daraus resultierende Ausgabe bei Ausführung dieses Skripts? |
Builtin-Variablen
[Bearbeiten]Gegeben sind die Dateien bsp
Mauretanien : 2500000 : 500 Tonga : 99000 : 2100 Korea, Republik : 46100000 : 14500
und zusatz
Ukraine : 53000000 : 1500 Marshallinseln : 62000 : 1800
Aufgabe | |||
---|---|---|---|
A60 |
Schreiben sie ein awk-Skript, das die Gesamtanzahl der Datensätze einer Datei, z.B. der Datei bsp, ausgibt. |
||
A70 |
Gegeben ist die Anweisung |
||
A80 |
Gegeben ist die Datei test.awk BEGIN { FS = ":" OFS = "->" } { print $1, $3 } Wie sieht die Ausgabe bei Ausführung von |
||
A90 |
Was für ein Ergebnis liefert die Anweisung BEGIN { FS = ":" } { print NR, FNR, $1 } |
Kontrollstrukturen
[Bearbeiten]Verzweigungen
[Bearbeiten]Gegeben ist die Tabelle feststoffe
Feststoff rho cp ------------------------- Al 2.70 0.92 Pb 11.34 0.13 Cr 7.19 0.51 Fe 7.87 0.47 Mg 1.74 1.03 Ti 4.54 0.47 Bi 9.80 0.13
Aufgabe | |||
---|---|---|---|
A100 |
awk 'BEGIN { rho=7.87 OFS="\t" } $2 ~ /^[[:digit:]]/ { if($2+0 > rho) print $1, $2, " >" else print $1, $2, " <=" }' feststoffe Diese Anweisung generiert aus der Datei feststoffe eine neue Tabelle. Wie sieht diese aus? |
||
A102 |
Gegeben ist die Formel . Kreieren sie ein awk-Skript, das aus der bekannten Datei feststoffe eine Tabelle, in der nachfolgend skizzierten Art, erzeugt. Feststoff Q/(V * deltaT) ----------------------------------------- Xyz 0,98 <= 2.0 Abc 4,67 > 2.0 |
Schleifen
[Bearbeiten]Aufgabe | |||
---|---|---|---|
A110 |
Gegeben ist die Formel . Generieren sie daraus mittels awk-Skript eine Tabelle ähnlich dieser x | y -------------- 0 | 0 1 | 1 2 | 4 Vorgaben:
|
||
A120 |
Gegeben ist ein Fragment eines awk-Skripts BEGIN { feld[1] = "Argon" feld[2] = "Luft" feld[3] = "Sauerstoff" feld[6] = "Helium" # ??????? } Erweitern sie dieses Skript so,
|
Funktionen
[Bearbeiten]Aufgabe | |||
---|---|---|---|
A140 |
Schreiben sie ein awk-Skript, das die folgenden Funktionen tabellarisch abbildet mit . Genauigkeit/Ausgabeformat:
|
||
A160 |
Gegeben sind zwei Tabellen, wie sie ähnlich auch in relationalen Datenbanken Verwendung finden. Datei inhaber: id vorname nachname ---------------------- 1 A. Aaaa 2 B. Bbbb 3 C. Cccc 4 D. Dddd 5 E. Eeee 6 F. Ffff Datei konto: id kontonummer inhaberid -------------------------- 1 08-123 1 2 08-543 3 3 07-030 6 4 08-429 5 5 03-455 2 6 02-728 5 7 07-888 1 8 02-512 1 9 09-045 6 Gesucht ist ein awk-Skript, das die relevanten Daten aus diesen beiden Tabellen in einer Tabelle kombiniert. Den Kontoinhabern sollen direkt ihre jeweiligen Kontonummern zugeordnet werden, etwa so A. Aaaa Konto 1: 08-123 Konto 2: 07-888 Konto 3: 02-512 B. Bbbb Konto 1: 03-455 ... Geben Sie auch die komplette Anweisung an, die ein Benutzer in das Computersystem eintippen soll, damit das awk-Skript das gewünschte Resultat in die Datei kombiniert schreibt. |