Fórum Root.cz
		Hlavní témata => Software => Téma založeno: Luboš  15. 05. 2011, 22:35:01
		
			
			- 
				Ahoj, mám tu hromadu dokumentu v DOC a rád bych si je převedl do HTML (pro čtení v Kindle). Mám tu těch souborů víc, takže bych uvítal nějakou hromadnou konverzi. Umí třeba OpenOffice.org takové věci z řádky? Nebo existuje jiné řešení? Díky
			
- 
				Zkus wvHtml.
			
- 
				Já jsem našel toto: http://freshmeat.net/projects/unoconv/ 
			
- 
				Super! Balík wv byl výborný tip. Ještě mám ale jeden problém: to html, co z toho leze, je dost složitě otagované. Ještě bych potřeboval nějaký html čistič, který by odstranil různé vlastnosti z různých tagů. Příklad: aby z <p class="něco a něco"> a <div style="něco dalšího"> udělal jen <p> a <div>.
			
- 
				To nebude asi tak lehké, protože to vypadá, že k nejlepší konverzi využívá styly, bez nich se to asi rozhodí ... nevím, neviděl jsem a ani jsem nezkoušel, je to jen má domněka.
			
- 
				Nejde mi o zachování designu, naopak chci co nejčistší HTML. Stačilo by mi "odstraň všechny div i s jejich parametry" nebo "nahraď všechny p s parametry obyčejným p". Měl by to zvládnout sed, ale já nevím, jak na to.
			
- 
				HTML si čistím pomocí http://php.net/manual/en/class.domdocument.php (http://php.net/manual/en/class.domdocument.php)
			
- 
				.... a sed je dobře popsanej na wikině: http://cs.wikipedia.org/wiki/Sed
			
- 
				Zkoušel jsem odstranit divy, ale nejde mi to. Poradíte?
 
 sed 's/\<*div*\>//g vstup.html vystup.html
- 
				Nevím, jestli sed umí hvězdičky .... vždycky jsem ho používal k nahrazení přesného výrazu .... zpětná lomítka se mi také nezdají.
			
- 
				Zkuste si příklad jedno HTMLko otevřít a nahradit třeba sed -i 's/<div/<divizna/g' index.html a mělo by to přepsat v již otevřeném HTML souboru, bez vytváření nového.
			
- 
				Díky za snahu. Mě by stačilo umět smazat něco v řádku "od do". Zkouším jiné věci, ale nejde to. Stačilo by smazat atribut "style", takže něco takového:
 
 sed 's/style=\"*\"//g' vstup.html  vystup.html
 
 Čili: nahraď vše od style=" do ". Mělo by to fungovat, ale nefunguje. Smaže to jen style=" ale zbytek nechá. Asi na tom sedu něco nechápu. Vysvětlíte mi to někdo chytřejší?
- 
				Tak jsem to zkoušel a zabralo mi toto: sed -i 's/style="*"/TEST007/g' index.php (je to příklad!)
			
- 
				Tak jsem to zkoušel a zabralo mi toto: sed -i 's/style="*"/TEST007/g' index.php (je to příklad!)
 
 To nemůže fungovat, protože je to špatně. Když už, tak
 sed -i 's/style=".*"/TEST007/g' index.phpale i to je špatně. Stačí, aby v prohledávaném řetězci (řádku) byly dva páry uvozovek a spolkne to vše uvnitř.
- 
				Já nepsal, že je to správně, ale tato syntaxe mi odstranila v celém dokumentu veškerý style s obsahem mezi uvozovkama a nahradila jej slovem TEST007. Více jsem to netestoval. Je jasné, že pro přesnou náhradu to bude chtít upravit, já osobně bych použil soubor náhrad, přeci jen se asi nebude nahrazovat jen ten style.
			
- 
				Když už, tak
 sed -i 's/style=".*"/TEST007/g' index.phpale i to je špatně. Stačí, aby v prohledávaném řetězci (řádku) byly dva páry uvozovek a spolkne to vše uvnitř.
 
 Když už, tak
 sed -i 's/style="[^"]*"/TEST007/g' index.php
 @Luboš:
 sed 's/style=\"*\"//g' vstup.html  vystup.htmlNajde style=. pak libovolný počet opakování uvozovek (hvězdička je opakování předchozího znaku (případně složitější uzávorkované konstrukce)), a pak jedny uvozovky. Cokoli jiného než uvozovky se tam nevleze.
 Takže před ní chceme [^"], což je jakýkoli znak kromě uvozovek - pak to najde (a nahradí) všechno od style=" až do další ".