Sziasztok!
Anno iso8859-2 terminal és karakterkódolás mellett az ékezeteimtől így szabadultam meg:
echo "Ezt kell ékezetteleníteni" | tr " űáéúőóüöíŰÁÉÚŐÓÜÖÍ" "_uaeuoouoiUAEUOOUOI"
és szépen működött.
Most már utf8-at használok és úgy vettem észre, hogy a tr, ezt nem szereti:
fifi@silverbook:~$ echo "Ezt kell ékezetteleníteni" | tr " űáéúőóüöíŰÁÉÚŐÓÜÖÍ" "_uaeuoouoiUAEUOOUOI"
Ezt_kell_IokezettelenIIteni
fifi@silverbook:~$ echo "Ezt kell ékezetteleníteni" | recode utf8..latin2 | tr " űáéúőóüöíŰÁÉÚŐÓÜÖÍ" "_uaeuoouoiUAEUOOUOI"
Ezt_kell_ékezetteleníteni
fifi@silverbook:~$
Szerintem releváns adataim:
SHELL=/bin/bash
LANG=en_US.UTF-8
LC_NUMERIC=hu_HU.UTF-8
LC_CTYPE=hu_HU.UTF-8
TERM=rxvt-unicode
COLORTERM=rxvt-xpm
fifi@silverbook:~$ tr --version
tr (GNU coreutils) 5.97
fifi@silverbook:~$ cat /etc/debian_version
4.0
Mit rontok el? Mi kerülte el a figyelmem? Esetleg tr nincs felkészítve a unicode-ra?
Előre is köszi a segítséget!
Bye, Fifi
- 2811 megtekintés
Hozzászólások
esetleg ez: LANG=en_US.UTF-8
udv Zoli
- A hozzászóláshoz be kell jelentkezni
Szerintem semmit nem rontottál el. A tr kivételesen csak angolul ért....
A megoldás pl. a sed:
echo aAáéüő | sed 'y/áéőü/aeou/''
- A hozzászóláshoz be kell jelentkezni
Kösz, a sed így jó:
echo "Amit ékezettelenítenék" | sed "y, űáéúőóüöíŰÁÉÚŐÓÜÖÍ,_uaeuoouoiUAEUOOUOI,"
Én is gondoltam rá, hogy megcsinálom vim-mel vagy sed-del, de mint írtam latin2-vel nem voltak gondjai a tr-nek.
Google, meg nem segített (lehet, hogy rosszul kerestem) abban, hogy a tr tud-e unicode-t kezelni, ezért kérdeztem itt.
Mégegyszer köszönöm a gyors segítséget!
Bye, Fifi
- A hozzászóláshoz be kell jelentkezni
A tr csak egybájtos karaktereket támogat.
- A hozzászóláshoz be kell jelentkezni
Hali,
Ha már ékezetekről van szó, megkérdezném:
Milyen módszerrel lehet eldönteni, hogy az az ékezet milyen kódkészlettel van kódólva? Történetesen letöltött mp3 fileok neveiben szereplő ékezetekkel van gondom, mivel dos-os környezetben kellene olvashatóvá tenni (az se gond ha nem lesz ékezet benne).
Akárhogy próbálkozok, sehogy se sikerül eltalálni a megfelelő készletet se recode, se iconv, se convm-el. :O
#cat menu.dat|recode utf8...latin2
"Invalid input in step `UTF-8..ISO-8859-2'"
#cat menu.dat|iconv -f utf8 -t iso8859-2
iconv: illegal input sequence at position 664
stb.
Előre is köszönöm
-----
icee
- A hozzászóláshoz be kell jelentkezni
Ezen parancsoknak mi a kimenete?
file menu.dat
head -5 menu.dat
Talán segít.
- A hozzászóláshoz be kell jelentkezni
Milyen módszerrel lehet eldönteni, hogy az az ékezet milyen kódkészlettel van kódólva?
Szemrevételezéssel :) Ha tudod, hogy milyen nyelvű szöveget tartalmaz, megnézed egy egybájtos kódolású (pl. latin2-es) terminálon. Ha szerencséd van, minden ok. Ha az ékezetesek 2 karakterként jelennek meg, de a többi betű jó, akkor valószínűleg utf8. Ha az ékezetek helyett egy-egy másik karakter jelenik meg, akkor valami dos-os kódolás lehet jó eséllyel.
#cat menu.dat|iconv -f utf8 -t iso8859-2
iconv: illegal input sequence at position 664
Lehet, hogy jó az utf8, de tartalmazhat olyan karaktert, ami nincs a latin2-ben. Próbáld -c kapcsolóval.
- A hozzászóláshoz be kell jelentkezni