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


10

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

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

  1. Por que -ro modo padrão não é o sed? Por que eu tive que me dar ao trabalho de escapar de tudo?
  2. mandiz que existe a opção --posixe que "POSIX.2 BREs devem ser suportados" A que isso se refere? Modo NFA / DFA?

Como um aparte, combinar o espaço em branco como o \s+uso de perl [[:space:]][:space:]]*no BRE e o mesmo ou [[:space:]]+no ERE.
jrm

Respostas:


10

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

Você não deseja interromper scripts existentes alterando o comportamento padrão.

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


E o ponto (2)?
11117 Jim

A edição ajuda?
tink

1

Em relação ao ponto 2: gnu sedusa o GNU BREpor padrão. Para usar o POSIX, BREvocê deve especificar--posix

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.