Скажем, у вас есть файл с именем test.txt
со следующими строками:
ಕದಂಬ
कदम्ब
Затем, предположим, что вы хотите заменить каждый символ деванагари Unicode (то есть в कदम्ब) на D. Затем вы можете думаю, что следующее будет работать:
find . -name 'test.*' | xargs perl -w -i -p -e 's/(\p{Devanagari})/D/g'
Но это не так. Как это сделать?
Как предложено steeldriver, можно вынудить обоих STDIN/STDOUT быть UTF-8:
-C самостоятельно (не сопровождаемый любым числом или списком опций), или пустая строка "" для переменной среды PERL_UNICODE, имеет тот же эффект как-CSDL. Другими словами, стандартные дескрипторы ввода-вывода и открытое значение по умолчанию () слой является 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