Egy P1 120-as notin (48M RAM) szeretnék rtf formátumú könyveket olvasni, dsl linux-al. A ted nekem nagyon nem jött be, mert ezen a gépen lassú, és nem is minden rtf-et nyit meg.
Ezért úgy gondoltam, hogy az rtf-eket txt-vé alakítom, és konzolból olvasom őket.
A konvertálással viszont gondom van:
- a catdoc gyors (5s per könyv), de a magyar ékezetes karaktereket elrontja: (é helyett e, ö helyett ?, stb), méghozzá úgy, hogy a sed-el nem tudom őket helyreállítani
- az rtfreader-el ugyanez a baj, csak ez látszólag egy digites hexa számokkal (1-F) helyettesíti az ékezetes karaktereket (ami szintén nem dolgozható meg a sed-el, mert nem lehet tudni, hogy pl. az 1-es tényleg egy egyes, vagy egy é betű-e az eredeti szövegben)
Ezért aztán írtam egy saját szkriptet, ami elég jól és ékezethelyesen átalakítja az rtf-et txt-be, csak az a baja, hogy kegyetlenül lassú; ezen a gépen kb. 5 perc/könyv. Lehetne ezt úgy optimalizálni, hogy kb. 5-ször ilyen gyors legyen?
Itt a szkript:
cat | sed '1,/pgdscno0/d' | sed -e 's/\\\(keepn\|aspalpha\|rdblquote\|dbch\|par \|pard\|plain \|ltrpar\|qc\|qj\|\*\|rtlch\|ltrch\|endash\|loch\)//g' -e 's/\\\(revtim\|creatim\|updnprop\|langfe\|hyphen\|hyphlead\|hyphtrail\|hyphmax\|deftab\)[0-9]*//g' -e 's/\\\(vern\|info\|page\|lang\)[0-9]*//g' -e 's/\\\(rin\|afs\|lin\|min\)[0-9]*//g' -e 's/\\\(yr\|mo\|dy\|hr\|up\|cs\|ai\|af\|li\|ri\|cf\|fs\|fi\|sb\|sa\|ab\)[0-9]*//g' -e 's/\\\(s\|f\|i\|b\)[0-9]*//g' -e "s/\\\'e9/é/g" -e "s/\\\'e1/á/g" -e "s/\\\'fa/ú/g" -e "s/\\\'f3/ó/g" -e "s/\\\'ed/í/g" -e "s/\\\'fc/ü/g" -e "s/\\\\u337 ?/ő/g" -e "s/\\\'f6/ö/g" -e "s/\\\u369 ?/ű/g" -e "s/\\\'d3/Ó/g" -e "s/\\\'c1/Á/g" -e "s/\\\'c9/É/g" -e "s/\\\'cd/í/g" -e "s/\\\\u336 ?/Ő/g" -e "s/\\\'d6//g" -e "s/\\\'da/Ú/g" -e "s/\\\\u368 ?/Ű/g" -e "s/\\\'d6/Ö/g" -e 's/\({\|}\)//g' | sed -f /usr/local/bin/splitlines.sed | sed '/^$/d'
A splitlines.sed a szóközöknél nagyjából egyenlő hosszú sorokra tördeli a szöveget, ezen nem hiszem, hogy lehetne javítani:
/.\{80\}/!b
s/^\(.\{1,79\}\) /\1\n /
s/^\(.\{1,78\}\)\n /\1 \n/
/\n/!s/ /\n /
P
D
Szóval, hogyan lehetne a fentieket optimalizálni, vagy esetleg van-e valami más konzoli rtf2txt megoldás, ami gyors, és a magyar ékezetes karaktereket is helyesen kezeli?