Найти и заменить регулярное выражение (соответствующий классу символов Unicode Devanagari) в нескольких файлах

Скажем, у вас есть файл с именем test.txt со следующими строками:

ಕದಂಬ
कदम्ब

Затем, предположим, что вы хотите заменить каждый символ деванагари Unicode (то есть в कदम्ब) на D. Затем вы можете думаю, что следующее будет работать:

find . -name 'test.*' | xargs perl -w -i -p -e 's/(\p{Devanagari})/D/g'

Но это не так. Как это сделать?

1
задан 25 March 2015 в 11:28

1 ответ

Как предложено 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

3
ответ дан 25 March 2015 в 11:28

Другие вопросы по тегам:

Похожие вопросы: