Warning
This page is located in archive. Go to the latest version of this course pages.

Zpracování textu a regulární výrazy

Domácí příprava

Nastudujte použití regulárních výrazů a nástroje pro zpracování textu (alespoň zběžně grep, sed a tr):

text

Zadání úlohy

Vytvořte skript (soubor musí mít příponu .sh), který zpracuje HTML stránku a najde v ní odkazy na PDF soubory. Skript bude HTML stránku buď stahovat z URL adresy (použijte nástroj wget), nebo ji obdrží na stdin.

Skript tedy

  1. zkontroluje parametry. Je-li zadán přepínač -i, stránka se načte ze stdin, je-li zadán přepínač -u, čte se z URL adresy, která je argumentem přepínače (následující parametr)
    1. kombinace obou přepínačů není přípustná a přepínač -u může být uveden maximálně jednou
  2. nalezne v obsahu všechny odkazy na PDF soubory (poznáte je podle přípony .pdf – bez ohledu na velikost písmen) a
  3. pro každý nalezený odkaz vypíše na standardní výstup jeho URL adresu (bez úpravy, tak jak je v souboru, adresa může být i relativní).

Případné chybné použití skriptu vypisujte na chybový výstup. Dále můžete chybový výstup používat dle potřeby pro ladící výpisy.

Pokuste se vyhledávání napsat tak, aby našlo opravdu všechny odkazy bez ohledu na to jak je formátovaný příslušná značka (tag) – za předpokladu, že značka odkazu je validní).

Může se vám hodit definice syntaxe HTML.

Můžete předpokládat že celá stránka je validní HTML a neobsahuje z hlediska této úlohy záludnosti typu:

<!-- <a href="..."> ... -->
<a title='hello href="asdf.pdf"' href=xxx>

Další poznámky k implementaci

  • při přepínači -h skript vypíše stručnou nápovědu a skončí (s exit kódem 0)
  • pokud není zadán žádný přepínač, nic se nevypíše a skript skončí s nenulovým exit kódem
  • na začátku skriptu musí být komentář s autorem a datem vzniku skriptu
  • odkazy na PDF soubory nikdy nebudou obsahovat znak konce řádky
  • pokuste se skript napsat tak, abyste šetřili pamětí a neukládali do zbytečně celý dokument do proměnné. využívejte efektivně roury (pipes)

Testování

Pro otestování vašeho skriptu byste si měli připravit vhodná testovací data. Některé případy můžete otestovat i proti této URL adrese:

https://cw.fel.cvut.cz/wiki/_media/courses/b4b35osy/cviceni/cviceni03_test_html.txt

Uvedený soubor sice není platná HTML stránka (hlavička s tagy <html> a <body> musela být odstraněna při nahrání na server cw), pokud však netestujete korektnost celého dokumentu (což po vás nechceme) tak by to na výsledek nemělo mít vliv.

Materiály

Domácí příprava na další cvičení

Předpokládáme, že máte základní znalosti jazyka C a jak funguje překlad ze zdrojových kódů jazyka C do binární spustitelné aplikace (v obecném případě kdy je zdrojových souborů více).

Dále byste měli mít alespoň minimální povědomí o použití překladače gcc a jeho základních parametrech (gcc)

Nastudujte si použití nástroje make pro překlad programu v jazyku C/C++: make

Dále je pro absolvování cvičení nutné mít přehled o systémových voláních fork, pipe, dup, open, kill, wait a exec, tzn. měli byste vědět jak vzniká nový proces a jak lze přesměrovat standardní vstup a výstup. Potřebné informace se dozvíte na některé z předchozích přednášek.

courses/b4b35osy/cviceni/cviceni3_text.txt · Last modified: 2017/10/27 12:48 by chudobj