Ékezet konvertalas (sed)

Hi All!

Ezzel a scriptemmel szeretnek sql-t konvertalni, de amikor az ekezetekhez er, akkor elszall.
ha tesztkent keszitek egy pr soros fajlt random ekezetekkel, akkor azon jol mukodik.
Mit rontok el amiert elszall a sed az ekezetnel? (ps.: tudom en is egyszeruiteni ezt a scriptet, azert bontottam szet, hogy lassam hol szall el)


#!/bin/bash
mysqldump  --user=root -p cc_intranet > $HOME/dump.sql

# string csere Latin1 > UTF-8
cat $HOME/dump.sql | sed s/latin1/utf8/g > $HOME/dump-utf8.sql

# Csere őŐűŰ betuket utf-8-ra, mert most latin1 swedish (õő ÕŐ ûű ÛŰ)
cat $HOME/dump-utf8.sql | sed s/õ/ő/g > $HOME/dump-utf8.sql # itt elszall.
cat $HOME/dump-utf8.sql | sed s/Õ/Ő/g > $HOME/dump-utf8.sql
cat $HOME/dump-utf8.sql | sed s/û/ű/g > $HOME/dump-utf8.sql
cat $HOME/dump-utf8.sql | sed s/Û/Ű/g > $HOME/dump-utf8.sql

mysqldump  --user=root -p cc_intranet_utf8 < $HOME/dump-utf8.sql
echo "Kész..."

Hozzászólások

ooops.. lehet az gond, hogy visszairom ugyanabba a fajlba az adatot :)
na teszt :P

Igen, ez volt a gond :) Akkor az utokornak:

Problema
Adatbazisom evek ota latin1-ben mukodott, de php-bol latin2-vel tomtem.
Az adatbazist atmasoltam egy UHU 2.0-ra ami alapbol utf8-at hasznal, majd szerkesztettem az /etc/my.cnf fajt emigyen:


[mysqld]

default-character-set = latin1
default-collation = latin1_swedish_ci

Ezutan:
service mysqld restart

Majd az alabbi script segitsegevel atalakitottama dump fajlt:


#!/bin/bash
mysqldump  --user=root -p cc_intranet > $HOME/dump.sql
cat $HOME/dump.sql | sed -e s/latin1/utf8/g -e s/õ/ő/g -e s/Õ/Ő/g -e s/û/ű/g -e s/Û/Ű/g > $HOME/dump-utf8.sql

mysqldump  --user=root -p cc_intranet_utf8 < $HOME/dump-utf8.sql
echo "Kész..."

... most itt tartok. majd folytatom, ha elkeszultem vele. (mert lehetnek meg gondok)

Miért nem csere-berével csináljátok...? o_O

sed -i "s/latin1/utf8/g;y/öÖüÜ/őŐűŰ" $HOME/dump.sql

Tudom, ez csak fikázás, de azért mégiscsak kevésbé kopik a klaviatúra. :P
Egyébiránt nem igazán értem a kettő közti különbséget: miért kell az 's' végére 'g', az 'y'-hoz meg nem kell...?
Azt akarom, hogy az emberek ne kényszerből tanuljanak, hanem azért, mert tudni akarnak.

iconv(1) a szokásos eszköz
pl: iconv -f latin2 -t utf8 to