Fórum Root.cz
Hlavní témata => Vývoj => Téma založeno: 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.
sed -n s/.*\(1_big.*.jpg\).*/\1/p "a.html" > "obrazky.html"
Prosim o pomoc a radu.
Dekuji za pomoc.
-
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.
grep -Poi '[a-z0-9_\-]+\.jpg'
-
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.
-
Tak to lze udelat takhle (pokud znate look-ahead, look-behind a lazy kvantifikator v regexpech):
grep -Po '(?<=1_big).*?(?=\.jpg)'
Pokud neznate, tak to muze byt srozumitelnejsi bez look-ahead a look-behind:
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).
-
mam pocit, ze HTML se neda genericky parsovat regularnimi vyrazy, ale toto nemam ze sve hlavy. Me sed/grep vzdy stacil..
-
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.