Re: Fwd: Romanizare conform cu regulile Aceademiei Romane
On 27-05-2005, at 22h 22'08", Ruset Zeno wrote about "Re: Fwd: Romanizare conform cu regulile Aceademiei Romane"
> ăsta trebuie scris folosind iso-8859-2 după care cu iconv se transformă în utf-8
> înlocuiţi în script "sed -e s/..." cu "sed -f <nume-fisier>"
> asta e tot
> PS: la scriptul perl în linia 48 la sfârşit lipseşte un ';', mai departe nu ma-m
> chinuit cu el, mi se pare că omor muşte cu tunul.
>
Cred că aşa am luat în considerare toate variantele:
sed ':a;s/\([a-zA-Z]\)î\([a-zA-Z]\)/\1â\2/;ta' | sed ':a;s/\([A-Za-z]\)Î\([A-Za-z]\)/\1Â\2/;ta' | sed ':a;s/\(\(R\|r\)e\|\(N\|n\)e\|\(D\|d\)e\(s\|z\)\|\(P\|p\)re\|\(P\|p\)ost\)â/\1î/;ta' | sed ':a;s/\(RE\|\NE\|DE\(S\|Z\)\|PRE\|POST\)Â/\1Î/;ta'
Întîi se înlocuiesc toţi î interiori cu â, respectiv Î cu Â, apoi din
regulile cu prefixe se corectează (â->î şi Â->Î) cuvintele compuse:
prefix + îcuvînt.
Pentru UTF-8:
sed ':a;s/\([a-zA-Z]\)Î\([a-zA-Z]\)/\1â\2/;ta' | sed ':a;s/\([A-Za-z]\)�\([A-Za-z]\)/\1�\2/;ta' | sed ':a;s/\(\(R\|r\)e\|\(N\|n\)e\|\(D\|d\)e\(s\|z\)\|\(P\|p\)re\|\(P\|p\)ost\)â/\1Î/;ta' | sed ':a;s/\(RE\|\NE\|DE\(S\|Z\)\|PRE\|POST\)�/\1�/;ta'
Ar fi bine de pus astea într-un fişier şi de verificat codarea mai
întîi. Asta din cauză că ghilimelele în UTF-8 au ca prim caracter în
8biţi chiar litera â sau  şi conform regulilor s-ar înlocui cu î sau
Î şi caracterul Unicode rezultat ar fi invalid.
Verificarea se poate face cu file. Pe un text 8biţi rezultatul este
"ISO-8859 text" iar pe UTF-8 rezultatul este "UTF-8 Unicode text".
Verificaţi şi voi daca fişierul pre-92_to_post-92.tcsh funcţionează.
Mugurel
#!/bin/tcsh
#Acest script transformă scrierea pre-92 în post-92
#Copyright I. M. Ciobîcă şi E. Petrişor, GPL, 2005
#Întîi se verifică dacă argumentul există
if ( $# != 1 ) then
echo "Usage: `basename $0` arg1"
exit 1
endif
#Apoi se verifică dacă fişierul există
if !( -e $1 ) then
echo "Usage: `basename $0` arg1"
echo "with arg1 a (text) file."
exit 2
endif
#Back-up?
cp -p $1 $1.bak
#Acum căutăm ce fel de codare avem, iso-8859-16 sau UTF-8?
if ( `file $1 | grep -i UTF-8 | wc -l` == 1 ) then
#avem UTF-8
cat $1.bak | sed ':a;s/\([a-zA-Z]\)Î\([a-zA-Z]\)/\1â\2/;ta' | \
sed ':a;s/\([A-Za-z]\)Ă?\([A-Za-z]\)/\1Ă?\2/;ta' | \
sed ':a;s/\(\(R\|r\)e\|\(N\|n\)e\|\(D\|d\)e\(s\|z\)\|\(P\|p\)re\|\(P\|p\)ost\)â/\1Î/;ta' | \
sed ':a;s/\(RE\|\NE\|DE\(S\|Z\)\|PRE\|POST\)Ă?/\1Ă?/;ta' | \
sed ':a;s/\([Ss]\)ĂŽnt/\1unt/;ta' | \
sed ':a;s/\([Ss]\)ânt/\1unt/;ta' | \
sed 's/SĂ?NT/SUNT/g' | sed 's/SĂ?NT/SUNT/g' > $1
else
#avem iso-8859-ceva, ceva=2,16
cat $1.bak | sed ':a;s/\([a-zA-Z]\)î\([a-zA-Z]\)/\1â\2/;ta' | \
sed ':a;s/\([A-Za-z]\)Î\([A-Za-z]\)/\1Â\2/;ta' | \
sed ':a;s/\(\(R\|r\)e\|\(N\|n\)e\|\(D\|d\)e\(s\|z\)\|\(P\|p\)re\|\(P\|p\)ost\)â/\1î/;ta' | \
sed ':a;s/\(RE\|\NE\|DE\(S\|Z\)\|PRE\|POST\)Â/\1Î/;ta' |\
sed ':a;s/\([Ss]\)[îâ]nt/\1unt/;ta' | \
sed 's/S[ÎÂ]NT/SUNT/g' > $1
endif
#Asta a fost. "diff $1 $1.bak"?
exit 0
Reply to: