Я пытаюсь выполнить приведенную ниже команду из сценария оболочки:perl -pi -e 's/Ç/|/g' diff_new_old.dat Эта команда выполняется без каких-либо ошибок, но выполнение не выполняет намеченную замену. Не похоже, что у shell есть проблема с выполнением команды perl, так как perl -pi -e 's/\n/\r\n/g' diff_new_old.dat работает нормально. Похоже, проблема с заменой специального символа.

Когда я выполняю ту же команду непосредственно в $ prompt, она выполняется нормально и заменяет все символы with на | в файле. Я хочу автоматизировать этот процесс и, таким образом, нужен способ сделать это из сценария оболочки.

Я также пытался использовать команду sed 's/ Ç / | /'. Но это приводит к ошибке ниже: sed: -e выражение # 1, char 6: неопределенная команда `s '

Пожалуйста, дайте мне знать, что я могу сделать, чтобы добиться замены.

Заранее спасибо.

1 ответ1

2

Возможно, вам придется сообщить Perl, что скрипт содержит символы UTF-8:

perl -Mutf8 -pi -e 's/Ç/|/g' diff_new_old.dat

см. http://perldoc.perl.org/utf8.html

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .