Fórum Ubuntu CZ/SK
Ubuntu pro osobní počítače => Software => Příkazový řádek a programování pro GNU/Linux => Téma založeno: augustin 05 Ledna 2012, 00:48:44
-
Potřebuju se zbavit netisknutelných znaků v txt souboru, který vznikl konverzí z doc documentu, je jich tam bohužel hodně, iconv na tom ztroskotává, což mě velmi irituje...
au@galway:~/tmp$ cat prvni4.txt | iconv --from-code UTF-8 --to-code ISO-8859-2 prvn� ot�zka Prameny obch. pr�va (obecn�, v�evr.pr�vu a �. pr�vu, p�sobnost obch.z�kon�ku)
O �esk�m pr�vn�m syst�mu a obecn� i o cel�m kontinent�ln�m pr�vu lze ��ci, �e se jedn� o psan� pr�vo, proto�e za prameny pr�va pova�uje (na rozd�l od angloamerick�ho pr�vn�ho syst�mu) t�m�� v�hradn� psan� pr�vn� normy iconv: illegal input sequence at position 353
Nejsem schopnej přijít na to, jaký znaky to jsou, abych je ručně odstranil nebo spíš nevím, jakej na to použít progam. Chtělo by to skript na odstranění non-printable characters. Všechno, co sem přes google našel, různý perl a pythonní vychytávky ale odstraňovaly i plno užitečnejch znaků jako je česká diakritika.
-
Jestli tomu rozumím správně, tak tenhle příkaz by měl ukázat znaky:
au@galway:~/tmp$ od -c prvni4.txt | head -n 20
0000000 p r v n 303 255 o t 303 241 z k a P
0000020 r a m e n y o b c h . p r 303
0000040 241 v a ( o b e c n 304 233 , v 302
0000060 240 e v r . p r 303 241 v u a 304 215
0000100 . p r 303 241 v u , p 305 257 s o b
0000120 n o s t o b c h . z 303 241 k o n
0000140 303 255 k u ) \n \n O 304 215 e s k 303 251
0000160 m p r 303 241 v n 303 255 m s y s t
0000200 303 251 m u a o b e c n 304 233 i
0000220 o c e l 303 251 m k o n t i n
0000240 e n t 303 241 l n 303 255 m p r 303 241 v
0000260 u l z e 305 231 303 255 c i , 305 276
0000300 e s e j e d n 303 241 o p s
0000320 a n 303 251 p r 303 241 v o , p r o
0000340 t o 305 276 e z a p r a m e n y
0000360 p r 303 241 v a p o v a 305 276 u j
0000400 e ( n a r o z d 303 255 l o d
0000420 a n g l o a m e r i c k 303 251 h
0000440 o p r 303 241 v n 303 255 h o s y s
0000460 t 303 251 m u ) t 303 251 m 304 233 305 231
jenže sloupečků je jen 16 a nalevo to ukazuje 20 :/
-
Ten text v souboru prvni4.txt už je ve formátu utf8, proč ho převádíš do ISO-8859-2?
Můžeš někam nahrát (část) originálního txt souboru a napsat, co má být cílem?
-
Snažím se ten text nechat vyslovit v eposu, bohužel epos je už dlouho neupgradovanej software a podporuje jen ISO-8859-2... Takže mým cílem vlastně je ta konverze do ISO-8859-2 z UTF-8. Jinak nejde mi o konverzi jedinýho textu, to bych kdyžtak udělal i ručně, mám těch textů hodně moc a chci to udělat hromadně.
-
Můžeš někam nahrát (část) originálního txt souboru?
-
začátek je tady: http://www.uloz.to/12283778/prvni4-txt originál má asi 200 stránek a pak mám ještě další, jak už sem psal.
-
Původní text obsahuje znaky, které se v ISO-8859-2 nedají zobrazit, např. pomlčka ve větě
téměř výhradně psané právní normy – tedy obecně závazné právní normy (zákony).
způsobí tuto chybu$ echo "–" | iconv --from-code UTF-8 --to-code ISO-8859-2
iconv: illegal input sequence at position 0
Možným řešením je použití přepínače TRANSLIT, který "nepřeložitelné" znaky nahradí podobným$ echo "–" | iconv --from-code UTF-8 --to-code ISO-8859-2//TRANSLIT
-
Takže v tvém případě pro celý soubor např.cat prvni4.txt | iconv --from-code UTF-8 --to-code ISO-8859-2//TRANSLIT > prvni4.iso88592.txt
-
díky moc!!! něco přesně jako ten //TRANSLIT jsem hledal.. skvělý ;D