Использование sed -r
(или в некоторых диалектах sed -E
) является нестандартным и необязательным.
Он выбирает диалект регулярного выражения, называемый расширенными регулярными выражениями, что позволяет вам выразить некоторые вещи более лаконично.
Базовые регулярные выражения POSIX поддерживают в значительной степени те же средства, но с синтаксисом странного шара, в котором вам нужно использовать обратную косую черту для некоторых символов, чтобы получить их особое значение (другими словами, это полностью противоположно тому, что изначально выполнялось с обратной косой чертой).
Так что, если у вас есть расширенное регулярное выражение, такое как a+(b{2})c
, то, если ваш sed
не поддерживает -r
или -E
, попробуйте a\+\(b\{2\}\}c
без какой-либо специальной опции и надеемся, что ваш sed
по крайней мере примерно такой же, как указано в POSIX.(Если вы серьезно относитесь к ретрокомпьютингу, это маловероятно.)
Оригинальная реализация регулярного выражения Кена Томпсона поддерживала только метасимволы регулярных выражений [...]
и .
и *
, а также длядолгое время, это все, что поддерживается sed
тоже.
Конечно, вы всегда можете установить более современный sed
.Я знаю, что у SunOS были некоторые вкусности в их каталоге xpg4
, но я понятия не имею, так ли это в Solaris;если это так, возможно, вам просто нужно добавить /usr/xpg4/bin
к вашему PATH
.(Согласно это это было верно, по крайней мере, в определенный момент времени.)