Search
Nastudujte použití regulárních výrazů a nástroje pro zpracování textu (alespoň zběžně grep, sed a tr):
Vytvořte skript (soubor musí mít příponu .sh), který najde v HTML stránce odkazy na PDF soubory (skript nebude provádět syntaktickou ani sémantickou analýzu HTML, pouze najde části textu se zadanou strukturou). Skript bude HTML stránku buď stahovat z URL adresy (použijte nástroj wget), nebo ji obdrží na stdin.
.sh
Skript tedy
Chybové hlášky vypisujte na chybový výstup začínající řetězcem “ERROR”. 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 formátování příslušné značky (tagu), za předpokladu, že značka odkazu je validní.
POZOR v Unixových systémech může soubor obsahovat jakékoliv znaky kromě /. Zkuste spustit
touch '!@#$%^&*()_-;:<>?+\\.pdf'
touch ' '
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>
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), avšak Vaším úkolem není testovat korektnost celého dokumentu (což regulárními výrazy nejde), tak by to na výsledek nemělo mít vliv.
Regulární výrazy
Předpokládáme, že máte základní znalosti jazyka C a víte, 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.