Fórum Root.cz

Hlavní témata => Vývoj => Téma založeno: Lukáš Holeček 08. 11. 2013, 20:06:07

Název: Nalezení dat v HTML pomocí sed
Přispěvatel: Lukáš Holeček 08. 11. 2013, 20:06:07
zdravim,
mam problem se sedem. Potrebuji extrahovat data z html souboru a zapsat ho do jineho. Problem je ze mi script vzdy vypise prvni nalezeny na radku od zadu a pak preskoci na dalsi radek.

Kód: [Vybrat]
sed -n s/.*\(1_big.*.jpg\).*/\1/p "a.html" > "obrazky.html"
Prosim o pomoc a radu.
Dekuji za pomoc.

Název: Re:Script sed
Přispěvatel: mareolan 08. 11. 2013, 20:27:34
Vhodnejsi mi na tohle prijde pouzit grep s prepinacem -o (vypisuje pouze namatchovanou cast). Pokud je na radku vice obrazku, tak vypise kazdy z nich.
Kód: [Vybrat]
grep -Poi '[a-z0-9_\-]+\.jpg'
Název: Re:Script sed
Přispěvatel: Lukáš Holeček 08. 11. 2013, 21:29:34
Super, presedlam tedy na grep. Nicmene bych potreboval aby to vypsalo text mezi 1_big a .jpg
Snazim se ho momentalne optimalizovat, ale nedari se.
Název: Re:Script sed
Přispěvatel: mareolan 08. 11. 2013, 21:46:48
Tak to lze udelat takhle (pokud znate look-ahead, look-behind a lazy kvantifikator v regexpech):
Kód: [Vybrat]
grep -Po '(?<=1_big).*?(?=\.jpg)'
Pokud neznate, tak to muze byt srozumitelnejsi bez look-ahead a look-behind:
Kód: [Vybrat]
grep -Po '1_big.*?\.jpg' a.html | sed 's/^.....\(.*\)....$/\1/'
Pro reg. vyrazy doporucuju obetovat nekolik hodin casu a prostudovat stranku http://www.regular-expressions.info/tutorialcnt.html (http://www.regular-expressions.info/tutorialcnt.html).
Název: Re:Script sed
Přispěvatel: e 08. 11. 2013, 21:51:40
mam pocit, ze HTML se neda genericky parsovat regularnimi vyrazy, ale toto nemam ze sve hlavy. Me sed/grep vzdy stacil..
Název: Re:Script sed
Přispěvatel: Lukáš Holeček 08. 11. 2013, 22:21:48
Velice Vam dekuji za pomoc, moc jste mi pomohli.
Behem vikendu se vrhnu na reg. vyrazy, at v tom mam jasno.
Jeste napisu jak jsem dopadl, zatim to vypada ze vse funguje.
Jeste jednou diky.