Какую версию sed
вы используете? Я считаю, что GNU sed должен поддерживать символы Unicode, и ваш пример работает для меня в Linux (Ubuntu, со средой UTF-8).
Если вы используете версию sed, которая не поддерживает Unicode, ваша группа символов будет повреждена, потому что она соответствует только одному байту. Если ваша командная строка использует кодировку UTF-8, когда вы говорите, “
что sed, не поддерживающий Юникод, на самом деле будет видеть три байта \xE2
, \x80
и \x9C
. Это поднимет вашу группу персонажей, которая будет соответствовать только одному из этих байтов за раз. Различные другие конструкции тоже потерпят неудачу, например. a”?
это буква 'a', затем два байта, за которыми следует необязательный третий байт, поэтому сам a
по себе он не будет соответствовать выражению, хотя выглядит так, как должно.
(Возможно, вы захотите рассмотреть также замену символа многоточия тремя периодами. Многоточие - это символ совместимости в Юникоде; обычно считается более современным выписать точки и позволить шрифту позаботиться о наборе текста.)