在多个文件中查找并替换正则表达式(匹配unicode字符类Devanagari)
假设您有一个名为test.txt
的文件,其中包含以下行:
ಕದಂಬ कदम्ब
然后,假设您想用D替换每个devanagarI unicode字符(即在कदम्ब中)。然后,您可能认为以下内容可行:
find . -name 'test.*' | xargs perl -w -i -p -e 's/(\p{Devanagari})/D/g'
但事实并非如此。 怎么做到这一点?
根据steeldriver的建议,您可以强制STDIN / STDOUT为UTF-8:
-C本身(没有后跟任何数字或选项列表),或PERL_UNICODE环境变量的空字符串“”与-CSDL具有相同的效果。 换句话说,标准I / O句柄和默认的open()层是UTF-8-fied,但仅限于语言环境变量指示UTF-8语言环境。
find . -name 'test.*' 2>/dev/null | xargs perl -w -C -i -p -e 's/(\p{Devanagari})/D/g'
将像这样转换您的示例文件:
ಕದಂಬ DDDDD
资料来源: http : //perldoc.perl.org/perlrun.html#Command-Switches