假设您有一个名为test.txt
以下行的文件:
ಕದಂ.ಬ
कदम्ब.
然后,假设您想用 । 替换 devanagarI unicode 字符(即 कदम्ब 中的)后面的每个点。那么,您可能会认为以下内容可行:
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'
(这是这个问题。
答案1
您必须告诉 perl 脚本主体包含 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
ಕದಂ.ಬ
कदम्ब।