Tracks
/
AWK
AWK
/
Übungen
/
Einfacher Bericht
Einfacher Bericht

Einfacher Bericht

Lernübung

Einführung

Zahlen und Strings

AWK ist eine sehr kleine Sprache und kennt nur wenige grundlegende Datentypen. In dieser Lektion schauen wir uns Zahlen und Strings an.

Zahlen

Zahlen sind in AWK als Gleitkommazahlen mit doppelter Genauigkeit umgesetzt. Es gibt keinen Unterschied zwischen Ganzzahlen, Gleitkommazahlen und Doubles.

AWK versteht oktale Zahlenkonstanten (beginnen mit 0) und hexadezimale Zahlenkonstanten (beginnen mit 0x oder 0X).

Numerische Operationen

Du kannst die üblichen arithmetischen Operatoren +, -, *, /, % verwenden. Der Operator für Potenzen ist ^. Es gibt einige eingebaute numerische Funktionen, darunter trigonometrische Funktionen, die Erzeugung von Zufallszahlen und int(x), um eine Zahl auf die nächste Ganzzahl zwischen x und null abzuschneiden.

Strings

AWK-Strings sind Zeichenfolgen. Du gibst eine String-Konstante mit doppelten Anführungszeichen an.

String-Operationen

Es gibt nur eine String-Operation: die Verkettung. Für die Verkettung gibt es keinen eigenen Operator; wenn du zwei Strings einfach nebeneinanderstellst, werden sie verkettet:

BEGIN {
    hw = "Hello" "World"
    print hw
}
# => HelloWorld
Note

print ist eine Anweisung, keine Funktion. print benötigt keine runden Klammern.

AWK hat eine Fülle von Funktionen zur String-Manipulation. Wir werden sie im Laufe des Tracks noch ausführlich kennenlernen.

Umwandlung zwischen Zahlen und Strings

Es gibt keine expliziten Operatoren, um zwischen Zahlen und Strings umzuwandeln. AWK erledigt das implizit, je nach Kontext des Programms. Das macht die Arbeit mit den Werten von Eingabefeldern sehr einfach: AWK macht im Allgemeinen einfach das, was du willst.

  • print x + y wandelt die Werte der Variablen x und y dank der numerischen Operation + in Zahlen um.
  • print x y wandelt die Werte der Variablen x und y dank der Verkettung in Strings um.

Wenn du es explizit haben willst, liefert 0 + x die Zahlendarstellung von x und "" x die Stringdarstellung von x.

Von Strings zu Zahlen

Die Art und Weise, wie AWK einen String in eine Zahl umwandelt, kann verwirrend sein. Ein einfacher Denkansatz: AWK liest vom Anfang eines Strings so lange „Zahlenzeichen", bis es auf ein Zeichen trifft, das keine Zahl ist. Ein paar Beispiele:

  • "2.5" wird in die Zahl 2.5 umgewandelt;
  • "1e3" wird in die Zahl 1000 umgewandelt (wissenschaftliche Notation);
  • "456abc" wird in die Zahl 456 umgewandelt (weil a keine „Ziffer" ist, endet die Umwandlung dort).
  • "abc789" wird in die Zahl 0 umgewandelt (am Anfang des Strings stehen keine Zahlen).

Anleitung

Du hilfst einem Freund, einen Bericht aus Messwerten zu erstellen, die er in verschiedenen Ecken seines Gartens aufgenommen hat. Leider hat dein Freund die Daten in einem seltsamen Format gespeichert. Jeder Messwert besteht aus einer Reihe durch Kommas getrennter Felder. Allerdings hat er zweistellige Zahlen auf zwei Spalten verteilt gespeichert.

Feldnummer Bedeutung
1 ID-Nummer
2 Ort
3 erster Messwert, Zehnerwert
4 erster Messwert, Einerwert
5 zweiter Messwert, Zehnerwert
6 zweiter Messwert, Einerwert

Für eine Eingabezeile wie 101,house,4,2,5,4

  • ist der erste Messwert 42,
  • ist der zweite Messwert 54.

Aufgabe 1: Bericht erstellen

Deine Aufgabe ist es, den Durchschnitt der beiden Messwerte zu ermitteln und die Ergebnisse jeder Zeile im folgenden Format auszugeben

#<id>, <label> = <average>

Da der Durchschnitt von 42 und 54 48 ist, sollte die Ausgabe für die Beispielzeile so aussehen:

#101, house = 48
Über GitHub bearbeiten Der Link öffnet sich in einem neuen Fenster oder Tab
AWK Exercism

Bereit, mit Einfacher Bericht zu starten?

Melde dich bei Exercism an, um AWK mit 3 Konzepte92 Übungen und echtem menschlichen Mentoring zu lernen und zu meistern, alles kostenlos.