| Erläuterungen | ||
| Schwierigkeitsgrad der Übungen:
| ||
| Lösungen: Die Links zu den Lösungen sind per Link-Bild realisiert. Im Gegensatz zu den üblichen Wikibooks-Gepflogenheiten gelangen Sie durch einen Klick auf das Symbol |
Variablen und Operatoren
Benutzerdefinierte Variablen und Operatorenpriorität
| 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
| 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
| 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
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
Verzweigungen
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
| 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
| 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. |