Grep

Grep

Közepes

Bevezetés

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.

Utasítások

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:

  1. A keresendő string.
  2. Nulla vagy több kapcsoló, amelyekkel testreszabhatod a parancs viselkedését.
  3. Egy vagy több fájl, amelyekben keresni kell.

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.

Kapcsolók

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.

Powershell-kurzus

A kapcsolók megváltoznak

A Powershell támogatja a függvények kapcsolóparamétereit, amelyek a parancssori kapcsolókhoz hasonlóan viselkednek.

Követve a Powershell azon szokását, hogy a parancsmagok és tulajdonságaik részletes és bőbeszédű neveket kapnak, az ebben a feladatban használt kapcsolók is új nevet kaptak, hogy tükrözzék a nyelvet.

  • Line (-n): A kimenet minden sora elé fűzd oda a sorszámot és egy kettőspontot („:”), a számot a fájlnév után elhelyezve (ha van).
  • File (-l): Csak azoknak a fájloknak a nevét írd ki, amelyek legalább egy egyező sort tartalmaznak.
  • Insensitive (-i): Kis- és nagybetűket nem megkülönböztető összehasonlítással keress egyezéseket.
  • Invert (-v): Fordítsd meg a program működését: gyűjtsd össze az összes olyan sort, amelyre nincs találat.
  • Whole (-x): Csak azokra a sorokra keress, ahol a keresési szöveg a teljes sorral egyezik.

Fájlok kezelése

A fő feladatod a grep függvény megvalósítása legyen, ne foglalkozz azzal, hogyan találod meg helyesen a fájlok elérési útját.

Ez a feladat 3 kötelező szöveges fájlt biztosít: iliad.txt, midsummer-night.txt és paradise-lost.txt a tesztekben; ezek tartalmát egyszerűen elérheted a Get-Content paranccsal, a szokásos fájlútvonal helyett a név stringet megadva.

Parancsmag

A Powershellnek valóban van egy Select-String nevű parancsmagja, amely hasonló a grep-hez, és ha érdekel, itt olvashatsz róla bővebben. Ebben a feladatban semmikor ne használd a Select-String-et.

Szerkesztés GitHubon A hivatkozás új ablakban vagy lapon nyílik meg
PowerShell Exercism

Készen állsz elkezdeni a(z) Grep feladatot?

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