Elszegődtél egy helyi könyvtárba, hogy segíts rendezni a régi könyvek gyűjteményét. A diák olvasók gyakran homályosan felidézett idézeteket keresnek, hogy hivatkozhassanak rájuk a szemináriumi dolgozataikban. Ahelyett, hogy minden könyvet kézzel olvasnál el elölről a végéig, úgy döntesz, építesz egy kis eszközt, amely átfésüli a könyveket, és megkeresi ezeket a töredékes idézeteket.
Keresd meg a fájlokban azokat a sorokat, amelyek illeszkednek egy keresési stringre, és add vissza az összes egyező sort.
A Unix grep parancs a fájlokban olyan sorokat keres, amelyek illeszkednek egy reguláris kifejezésre.
A feladatod egy egyszerűsített grep parancs megvalósítása, amely rögzített stringek keresését támogatja.
A grep parancs három argumentumot kap:
Ezután beolvassa a megadott fájlok tartalmát (a megadott sorrendben), megkeresi azokat a sorokat, amelyek tartalmazzák a keresési stringet, és végül visszaadja ezeket a sorokat abban a sorrendben, ahogy megtalálta őket. Ha több fájlban keresel, minden egyező sor elé a fájl neve és egy kettőspont (':') kerül.
A grep parancs a következő kapcsolókat támogatja:
-n A kimenet minden sora elé írd oda a sorszámot és egy kettőspontot (':'); a számot a fájlnév után helyezd el (ha van).-l Csak azon fájlok nevét írd ki, amelyek legalább egy egyező sort tartalmaznak.-i Kis-nagybetűre érzéketlen összehasonlítással keress.-v Fordítsd meg a program működését, és gyűjtsd össze az összes olyan sort, amely nem egyezik.-x Csak azokra a sorokra keress, ahol a keresési string a teljes sorral egyezik.A többi feladattól eltérően a grep.js-t nem importáljuk be a grep.spec.js tesztfájlba. Ehelyett úgy használjuk, mintha egy futtatható program lenne. Hogy ez működjön, a grep.js fájlt elláttuk egy shebanggel és egy megjegyzéssel, amely elmagyarázza, hogy ez mit csinál:
#!/usr/bin/env node
// The above line is a shebang. On Unix-like operating systems, or environments,
// this will allow the script to be run by node, and thus turn this JavaScript
// file into an executable. In other words, to execute this file, you may run
// the following from your terminal:
//
// ./grep.js args
//
// If you do not have a Unix-like operating system or environment, for example
// Windows without WSL, you can use the following inside a window terminal,
// such as cmd.exe:
//
// node grep.js args
//
// Read more about shebangs here: https://en.wikipedia.org/wiki/Shebang_(Unix)
A tesztek elindítanak egy új node-folyamatot, amely lefuttatja a grep.js-t.
Ahhoz, hogy megtudd, milyen argumentumokkal indult el a folyamat, használd a process.argv-t.
A readLines függvény rendelkezésre áll. Nem kell átalakítanod a fájl elérési útját, hogy használhasd. A readlines függvény az aktuális munkakönyvtárból oldja fel az elérési utat, ami a grep.js folyamatai esetében a feladat könyvtárára van beállítva.
A kimenet írásához a következőket használd:
console.log, ha a szabványos kimeneti folyamra akarsz írni,console.error, ha a szabványos hibafolyamra akarsz írni.A tesztek akkor tekintik sikeresnek (resolved) a végrehajtást, ha semmi sem íródik a szabványos hibafolyamra, és akkor tekintik sikertelennek (rejected), ha valami íródik a szabványos hibafolyamra.
Iratkozz fel az Exercism-re, hogy megtanuld és elsajátítsd a(z) JavaScript nyelvet 37 fogalom159 feladat segítségével, valódi emberi mentorálással, mindez ingyen.