Kurzusok
/
jq
jq
/
Feladatok
/
Naplósor-elemző
Naplósor-elemző

Naplósor-elemző

Tanulófeladat

Bevezetés

Stringek

Emlékezz vissza, hogy a jq ugyanazokat az adattípusokat támogatja, mint a JSON. A JSON a stringeket így írja le:

A string nulla vagy több Unicode-karakter sorozata, kettős idézőjelek közé zárva, fordított perjeles escape-szekvenciák használatával.

Escape-szekvenciák

A stringen belül a fordított perjel karakterrel ágyazhatsz be „speciális” karaktereket:

  • \" egy szó szerinti idézőjel,
  • \\ egy szó szerinti fordított perjel,
  • whitespace-karakterek \n, \t, \r, \f, \b
  • unicode-karakterek \uAAAA, ahol A egy hexadecimális számjegy

String hossza

A karakterek számának meghatározásához a length függvényt használd.

$ jq -cn --args  '$ARGS.positional[] | length' "Hello world!" "❄🌡🤧🤒🏥🕰😀"
12
7

Részstringek

A szeletelés jelöléssel részstringeket nyerhetsz ki. A szintaxis .[i:j]. A visszaadott részstring hossza j - i, és az i indexű karaktertől (beleértve) a j indexű karakterig (kizárva) adja vissza a karaktereket. Mindkét index lehet negatív, ilyenkor a string végétől számol vissza. Mindkét index elhagyható, ilyenkor a string elejére vagy végére utal. Az indexelés nullától kezdődik.

"abcdefghij"[3:6]   # => "def"
"abcdefghij"[3:]    # => "defghij"
"abcdefghij"[:-2]   # => "abcdefgh"

Összefűzés

A stringek összefűzéséhez a + operátort használd:

"Hello" + " " + "world!"
# => "Hello world!"

Ha stringek tömbjét kapod, használd az add függvényt:

["Hello", " ", "world!"] | add
# => "Hello world!"

Szétvágás és összekapcsolás

A szétvágáshoz a split/1 függvényt vagy a / operátort használhatod:

"Hello beautiful world!" | split(" ")   # => ["Hello", "beautiful", "world!"]
"Hello beautiful world!" / " "          # => ["Hello", "beautiful", "world!"]

A split/1 inverze a join/1.

Gyakran szükség van arra, hogy egy stringet karakterek tömbjévé alakítsunk. Erre kétféleképpen van lehetőség:

  1. vágd szét üres stringen

    "Hi friend 😀" / ""   # => ["H","i"," ","f","r","i","e","n","d"," ","😀"]
    
  2. explode segítségével alakítsd kódpontok tömbjévé

    "Hi friend 😀" | explode   # => [72,105,32,102,114,105,101,110,100,32,128512]
    

    Az implode az explode inverze.

Részstring indexének megkeresése

Az index/1 függvényt használd; az index nullától kezdődik.

"hello" | index("el")'   # => 1

Ha a részstring nincs benne a stringben, az eredmény null

"hello" | index("elk")   # => null

String-interpoláció

Egy stringen belül a \(expression) szekvencia beágyazza a kifejezés eredményét a stringbe:

"The current datetime is \(now | strflocaltime("%c"))"   # => "The current datetime is Wed Nov 16 17:06:33 2022"

Kis- és nagybetűváltás

Az ascii_downcase és ascii_upcase függvényeket használd.

Reguláris kifejezések

A jq széles körű támogatást nyújt a reguláris kifejezésekhez: ez egy későbbi lecke témája lesz.

Utasítások

Ebben a feladatban naplóbejegyzéseket fogsz feldolgozni.

Minden naplósor egy karakterlánc, amelynek formátuma a következő: "[<LEVEL>]: <MESSAGE>".

Háromféle naplószint létezik:

  • INFO
  • WARNING
  • ERROR

Három részfeladatod van, és mindegyik kap egy naplósort, amellyel valamit tenned kell. Sokféleképpen megoldhatod ezeket a részfeladatokat: válaszd ki a kedvenc technikáidat a fenti példák közül, és lássuk, mire jutsz.

1. Üzenet kinyerése egy naplósorból

Valósítsd meg a message függvényt, amely visszaadja a naplósor üzenetét:

"[ERROR]: Invalid operation" | message
# => "Invalid operation"

A kezdő és a záró szóközöket el kell távolítani:

"[WARNING]:  Disk almost full\r\n" | message
# => "Disk almost full"

2. Naplószint kinyerése egy naplósorból

Valósítsd meg a log_level függvényt, amely visszaadja a naplósor naplószintjét, méghozzá kisbetűvel:

"[ERROR]: Invalid operation" | log_level
# => "error"

3. Naplósor újraformázása

Valósítsd meg a reformat függvényt, amely újraformázza a naplósort: az üzenet kerül előre, utána pedig a naplószint zárójelben:

"[INFO]: Operation completed" | reformat
# => "Operation completed (info)"
Szerkesztés GitHubon A hivatkozás új ablakban vagy lapon nyílik meg
jq Exercism

Készen állsz elkezdeni a(z) Naplósor-elemző feladatot?

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