假设您有一个名为test.txt
以下行的文件:
ಕದಂಬ
कदम्ब
然后,假设您想用 D 替换每个 devanagarI unicode 字符(即 कदम्ब 中的字符)。然后,您可能会认为以下操作可行:
find . -name 'test.*' | xargs perl -w -i -p -e 's/(\p{Devanagari})/D/g'
但事实并非如此。如何实现这一点?
答案1
根据steeldriver的建议,您可以强制STDIN/STDOUT都为UTF-8:
单独使用 -C(后面不跟任何数字或选项列表)或 PERL_UNICODE 环境变量的空字符串“”,与 -CSDL 具有相同的效果。换句话说,标准 I/O 句柄和默认 open() 层是 UTF-8 化的,但前提是语言环境变量指示 UTF-8 语言环境。
find . -name 'test.*' 2>/dev/null | xargs perl -w -C -i -p -e 's/(\p{Devanagari})/D/g'
将转换您的示例文件如下:
ಕದಂಬ
DDDDD