4 votes

sed -r vs. sed - comment les possibilités de regex sont-elles étendues exactement ?

Dans bash, si je comprends bien, je peux utiliser des caractères comme . & ^ * dans les expressions régulières avec sed, mais l'option -r change la nature de la façon dont les expressions régulières sont, euh, exprimées, un peu comme grep vs. grep -E. Mais je ne peux pas trouver de résumé de la façon dont la syntaxe change exactement. Existe-t-il une liste quelque part ? Suis-je naïf en pensant que c'est le genre de choses qu'il devrait être possible de résumer dans un tableau qui pourrait être imprimé sur quelques pages ?

Les caractères qui fonctionnent avec les expressions regex sed non étendues fonctionnent-ils de la même manière avec l'option -r ? En d'autres termes, les expressions qui sont valables SANS l'option -r, sont-elles toujours valables, et ont-elles toujours la même signification, AVEC l'option -r ? Comme si elles étaient un sous-ensemble des expressions valides AVEC l'option -r ?

Je continue à penser qu'il doit y avoir quelque part un résumé concis de la différence avec des exemples.

5voto

xenoid Points 9208

Selon info sed , Les regexps étendues sont celles que 'egrep' accepte ; elles peuvent être plus claires parce qu'elles ont généralement moins de barres obliques inversées, mais elles sont une extension GNU et donc les scripts qui les utilisent ne sont pas portables. . egrep étant un synonyme de grep -E .

C'est effectivement le cas : sans :

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

Avec :

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

Certaines expressions peuvent être valables avec les deux, mais dans de nombreux cas, elles seront interprétées différemment. La logique d'échappement des caractères dans un sed régulier et conforme à POSIX m'échappe totalement.

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X