Скажем, у вас есть файл с именем test.txt
со следующими строками:
ಕದಂ.ಬ
कदम्ब.
Затем предположим, что вы хотите заменить каждую точку, следующую за символом юникода devanagarI (то есть в कदम्ब), на।. Тогда вы можете подумать, что будет работать следующее:
find . -name 'test.*' | xargs perl -w -i -C -p -e 's/(\p{Devanagari})\./$1।/g'
Но это не так (я вижу точку в конце, замененную на ¥ ¥ ¤).
Как исправить вышесказанное?
Редактировать: ниже работает, но я хотел что-то более читабельное:
find . -name 'test*'|xargs perl -C -w -i -p -e 's/(\p{Devanagari})\./$1\x{0964}/g'
(Это продолжение до этот вопрос .)
Необходимо сказать жемчугу, что тело сценария содержит символы UTF8:
$ perl -w -C -p -e 's/(\p{Devanagari})\./$1।/g' test.txt
ಕದಂ.ಬ
कदम्ब।
$ perl -Mutf8 -w -C -p -e 's/(\p{Devanagari})\./$1।/g' test.txt
ಕದಂ.ಬ
कदम्ब।