sed -r vs. sed - exatamente como as possibilidades de regex são estendidas?

1

No bash, pelo que entendi, posso usar caracteres como. & ^ * em expressões regulares com sed, mas a opção -r muda a natureza de como expressões regulares são, uh, expressas, tipo grep vs. grep -E. Mas não consigo encontrar nenhum resumo de exatamente como a sintaxe muda. Existe uma lista em algum lugar? Estou sendo ingênuo ao pensar que esse é o tipo de coisa que deveria ser possível resumir em uma tabela que poderia ser impressa em algumas páginas?

Os caracteres que funcionam com expressões regulares regex não extensas do sed, ainda funcionam da mesma maneira com a opção -r? Em outras palavras, expressões que são válidas, SEM a opção -r, ainda são válidas e ainda significam a mesma coisa, COM a opção -r? Como se fossem um subconjunto das expressões válidas com a opção -r?

Eu continuo pensando que deve haver um resumo da diferença com exemplos em algum lugar.

    
por Lew Rockwell Fan 09.07.2017 / 05:08

1 resposta

0

De acordo com info sed , Extendexs prolongados são aqueles que o 'egrep' aceita; eles podem ser mais claros, porque eles geralmente têm menos barras invertidas, mas são uma extensão do GNU e, portanto, os scripts que os utilizam não são portáveis . egrep sendo sinônimo de grep -E .

Este é realmente o caso: sem:

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

Com:

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

Algumas expressões podem ser válidas para ambos, mas em muitos casos elas serão interpretadas de forma diferente. O personagem escapando da lógica em um sed regular compatível com POSIX me escapa totalmente.

    
por 09.07.2017 / 10:36