Pourquoi sed n'utilise-t-il pas le mode regex étendu par défaut?


10

J'utilise sed. J'utilisais une expression régulière correcte pour autant que je puisse voir, mais sed n'a rien fait. Il s'avère que j'utilisais \s+ce que sed ne peut pas comprendre, et quand je suis passé, [ ]+cela a fonctionné.

Donc, pour résumer, j'ai fait une expression régulière qui, pour que cela fonctionne, je devais échapper à presque tout et supprimer le \spour les espaces blancs. Semble qu'il existe un mode pour éviter tout cela qui est -rdonc je voulais demander:

  1. Pourquoi -rle mode par défaut n'est-il pas pour sed? Pourquoi ai-je dû me donner tant de mal pour tout échapper?
  2. manindique qu'il existe une option --posixet que "les BRE POSIX.2 doivent être pris en charge". À quoi cela fait-il référence? Mode NFA / DFA?

En aparté, pour faire correspondre les espaces comme l' \s+utilisation de perl [[:space:]][:space:]]*dans BRE et le même ou [[:space:]]+dans ERE.
jrm

Réponses:


10

Concernant 1) La réponse est la même que pour tout autre outil amélioré au fil des décennies. :)

Vous ne voulez pas casser les scripts existants en modifiant le comportement par défaut.

Re 2) Cela n'a rien à voir avec le moteur correspondant; c'est juste une question de savoir quel ensemble d'expressions régulières est pris en charge. POSIX BRE signifie "expression régulière de base".


Et le point (2)?
Jim

La modification est-elle utile?
tink

1

Concernant le point 2: gnu sedutilise GNU BREpar défaut. Pour utiliser POSIX, BREvous devez spécifier--posix

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.