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 \s
pour les espaces blancs. Semble qu'il existe un mode pour éviter tout cela qui est -r
donc je voulais demander:
- Pourquoi
-r
le mode par défaut n'est-il pas pour sed? Pourquoi ai-je dû me donner tant de mal pour tout échapper? man
indique qu'il existe une option--posix
et que "les BRE POSIX.2 doivent être pris en charge". À quoi cela fait-il référence? Mode NFA / DFA?
\s+
utilisation de perl[[:space:]][:space:]]*
dans BRE et le même ou[[:space:]]+
dans ERE.Réponses:
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".
la source
Concernant le point 2:
gnu sed
utilise GNUBRE
par défaut. Pour utiliser POSIX,BRE
vous devez spécifier--posix
la source