2016-09-08 2 views
-1

текст, выделенный текст Я использую классы egrep и character, как показано ниже. Класс символов [aã] не работает, если я не использую (a|ã). Что я делаю не так?Класс символов в egrep, вызванный с Perl, не распознается

my @rows = `egrep --no-group-separator -r -i -I -H -A1 "^name#.*?jo[aã]o.*?#.*?#.*?#.*?#.*?\$" .`; 

Файлы, находящиеся на поиске, находятся в формате UTF-8. Это проблема?

Это линия, которую я пытаюсь сопоставить. Я использую специальные символы с диакритикой. Файл был преобразован из CP1252 в UTF-8 с помощью команды iconv в linux.

имя # João Álvares Батиста # 1751 # Хосе Альварес Виейра # Джоана Родригес Барбоза # Мария да Консейсау # летучая # 101 # HTTP ##

Это мой исходный код:. мои @rows = egrep --include="image_args_search_*.txt" --no-group-separator -r -i -I -H -A1 "$operator" . ;

где $ operator: ^имя #. ? J [OÔТÓÕÖoòóôõö] [AÁÁÂÃÄààââää] [OÔÒÓÕÖoòóôõö].? #. ? #.? #. ? #.? \ $

Я думаю, проблема в том, что символы с акцентами в команде egrep не соответствуют строкам в файлах формата UTF-8. Как это исправить?

Спасибо,

Marc

+1

Вы могли бы внести пустые комментарии к вашему вопросу? На самом деле не имеет смысла использовать 'egrep' в скрипте Perl ... – stevieb

ответ

-1

Это решение. Я должен был добавить LANG = en_US.UTF-8 перед командой, как показано ниже:

my @rows = `LANG=en_US.UTF-8 grep --include="image_args_search_*.txt" --no-group-separator -P -r -i -I -H -A1 "$operator" .`; 
Смежные вопросы