1

В bash, насколько я понимаю, я могу использовать такие символы, как. & ^ * в регулярных выражениях с sed, но опция -r меняет природу выражения регулярных выражений, вроде как grep vs. grep -E. Но я не могу найти резюме того, как именно меняется синтаксис. Есть ли где-нибудь список? Неужели я наивен, думая, что это такая вещь, которую можно было бы обобщить в таблице, которую можно напечатать на нескольких страницах?

Знаки, которые работают с простыми старыми нерасширенными выражениями sed regex, все еще работают так же с опцией -r? Другими словами, являются ли выражения, допустимые БЕЗ параметра -r, все еще действительными и все еще означающие то же самое, С параметром -r? Как будто они были подмножеством выражений, допустимых с параметром -r?

Я продолжаю думать, что должна быть краткая сводка различий с примерами где-то.

1 ответ1

0

Согласно info sed , расширенные регулярные выражения - это те, которые принимает «egrep»; они могут быть более понятными, потому что они обычно имеют меньшую обратную косую черту, но являются расширением GNU и, следовательно, скрипты, которые их используют, не являются переносимыми. egrep является синонимом для grep -E .

Это действительно так: без:

echo "abcdef" | sed 's/\([cd]\+\)/\U\1/'
abCDef

С:

echo "abcdef" | sed -r 's/([cd]+)/\U\1/'
abCDef

Некоторые выражения могут быть допустимы с обоими, но во многих случаях они будут интерпретироваться по-разному. Символ, избегающий логики в обычном, POSIX-совместимом sed, полностью ускользает от меня.

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