Por que o sed não está usando o modo de regex estendido por padrão?

10

Estou usando o sed. Eu estava usando um regex que estava correto, até onde eu podia ver, mas sed não fez nada. Acontece que eu estava usando \s+ que sed não consegue entender, e quando mudei para [ ]+ funcionou.

Então, para resumir, eu fiz um regex que para funcionar, eu tive que escapar de quase tudo e remover o \s do espaço em branco. Parece que existe um modo para evitar tudo isso que é -r Então eu queria perguntar:

  1. Por que não é -r o modo padrão para o sed? Por que eu tive que me esforçar tanto para escapar de tudo?
  2. man diz que existe a opção --posix e que "POSIX.2 BREs deve ser suportado" A que isso se refere? Modo NFA / DFA?
por Jim 11.02.2014 / 22:29

2 respostas

9

Re 1) A resposta é a mesma que para qualquer outra ferramenta que foi melhorada ao longo de décadas. :)

Você não quer quebrar scripts existentes alterando o comportamento padrão.

Re 2) Isso não tem nada a ver com o mecanismo de correspondência; é apenas uma questão de qual conjunto de expressões regulares é suportado. POSIX BRE significa "expressão regular básica".

    
por 11.02.2014 / 22:31
1

Em relação ao ponto 2: gnu sed usa o GNU BRE por padrão. Para usar POSIX BRE você deve especificar --posix

    
por 10.05.2016 / 13:55