Kurzusok
/
AWK
AWK
/
Feladatok
/
Egyszerű jelentés
Egyszerű jelentés

Egyszerű jelentés

Tanulófeladat

Bevezetés

Számok és stringek

Az AWK egy nagyon kicsi nyelv, és csak néhány alapvető adattípusa van. Ebben a leckében a számokról és a stringekről lesz szó.

Számok

Az AWK-ban a számok dupla pontosságú lebegőpontos számokként vannak megvalósítva. Nem tesz különbséget egész, lebegőpontos és dupla pontosságú számok között.

Az AWK érti a nyolcas számrendszerbeli számkonstansokat (amelyek 0-val kezdődnek) és a tizenhatos számrendszerbeli számkonstansokat (amelyek 0x-szel vagy 0X-szel kezdődnek).

Numerikus műveletek

A szokásos aritmetikai operátorokat használhatod: +, -, *, /, %. A hatványozás operátora a ^. Van néhány beépített numerikus függvény is, köztük trigonometrikus függvények, véletlenszám-generálás, valamint az int(x), amely egy számot az x és a nulla közötti legközelebbi egész számra csonkol.

Stringek

Az AWK stringjei karakterek sorozatai. Egy stringkonstanst kettős idézőjelek közé írva adsz meg.

Stringműveletek

Egyetlen stringművelet létezik: az összefűzés. Az összefűzésnek nincs külön operátora; ha egyszerűen egymás mellé írsz két stringet, azzal összefűzöd őket:

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

A print egy utasítás, nem függvény. A print nem igényel zárójeleket.

Az AWK rengeteg stringmanipulációs függvénnyel rendelkezik. Ezekkel részletesen megismerkedünk majd, ahogy haladunk előre a kurzusban.

Konvertálás számok és stringek között

Nincsenek kifejezett operátorok a számok és a stringek közötti átalakításra. Az AWK ezt implicit módon, a program kontextusa alapján végzi el. Ez nagyon egyszerűvé teszi a bemeneti mezők értékeivel való munkát: az AWK általában egyszerűen azt csinálja, amit szeretnél.

  • A print x + y a + numerikus műveletnek köszönhetően számmá alakítja az x és y változók értékét.
  • A print x y az összefűzésnek köszönhetően stringgé alakítja az x és y változók értékét.

Ha ezt kifejezetten szeretnéd, a 0 + x megadja x számreprezentációját, a "" x pedig x stringreprezentációját.

Stringekből számokká

Az, ahogyan az AWK egy stringet számmá alakít, zavaró lehet. Gondolj úgy rá, hogy az AWK a string elejétől kezdve „számkaraktereket” olvas egészen addig, amíg egy „nem szám” karakterhez nem ér. Néhány példa:

  • A "2.5" a 2.5 számmá alakul;
  • Az "1e3" az 1000 számmá alakul (tudományos jelölés);
  • A "456abc" a 456 számmá alakul (mert az a nem „számjegy”, itt megáll az átalakítás).
  • Az "abc789" a 0 számmá alakul (a string elején nincsenek számok).

Utasítások

Segítesz a barátodnak jelentést készíteni a kertje különböző zugaiban végzett leolvasásaiból. Sajnos a barátod elég furcsa formátumban tárolta az adatokat. Minden leolvasás több, vesszővel elválasztott mezőből áll. A kétjegyű számokat viszont két oszlopra bontva tárolta.

mező száma jelentése
1 azonosítószám
2 helyszín
3 az első leolvasás tízes helyi értéke
4 az első leolvasás egyes helyi értéke
5 a második leolvasás tízes helyi értéke
6 a második leolvasás egyes helyi értéke

Egy ilyen bemeneti sor esetén: 101,house,4,2,5,4

  • az első leolvasás 42,
  • a második leolvasás 54.

Feladat 1: Készítsd el a jelentést

A feladatod, hogy kiszámold a két leolvasás átlagát, és minden sor eredményét a következő formátumban írd ki:

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

Mivel 42 és 54 átlaga 48, a mintasor kimenete ez legyen:

#101, house = 48
Szerkesztés GitHubon A hivatkozás új ablakban vagy lapon nyílik meg
AWK Exercism

Készen állsz elkezdeni a(z) Egyszerű jelentés feladatot?

Iratkozz fel az Exercism-re, hogy megtanuld és elsajátítsd a(z) AWK nyelvet 3 fogalom92 feladat segítségével, valódi emberi mentorálással, mindez ingyen.