2012-09-16 2 views
6

Est-ce que quelqu'un sait ce qu'est la liste complète des caractères spéciaux dans sed?caractères spéciaux dans sed

S'il vous plaît ne donnez pas une réponse comme, c'est la même liste de caractères spéciaux pour grep, parce que cela transforme juste ma question à: Est-ce que quelqu'un sait ce qu'est la liste complète des caractères spéciaux dans grep?

+0

La documentation pour sed (et grep) est ce que vous cherchez. Qu'est-ce que tu n'y as pas trouvé? – Mat

+0

Je ne vois que des exemples de caractères spéciaux, mais je ne suis jamais sûr que c'est la liste _complete_ de caractères spéciaux – mnr

+2

Je ne suis même pas sûr de ce que vous entendez par "caractère spécial", mais la documentation liste tout ce que vous pouvez faire. Il ne sert à rien de reproduire cette documentation ici. – Mat

Répondre

3

Je pense que c'est la liste complète des caractères [\^$. |? * +() Sur lesquels sed répondra d'une manière différente d'un caractère normal.

+2

Dépend aussi du dialecte. Sous Linux 'sed' les caractères'() | +? 'Ne sont pas spéciaux par eux-mêmes, seulement s'ils sont précédés d'un backslash. – tripleee

+1

Egalement dans une classe de caractères '^ -]' (mais pas d'autres) sont spéciaux. C'est une mini-langue séparée, vraiment. – tripleee

+1

Dans une classe de caractères sous [POSIX] (http://pubs.opengroup.org/onlinepubs/9699919799/basedefs/V1_chap09.html), vous pouvez également écrire des expressions sensibles aux paramètres régionaux, telles que [[: alpha:]] ' ou '[[: punct:] [: digit:]]', donc ':' a aussi une signification spéciale - et c'est (encore un autre) mini-langage. L'URL répertorie le comportement de BRE (expression régulière de base) POSIX-standard et ERE (expression régulière étendue). La description POSIX de ['sed'] (http://pubs.opengroup.org/onlinepubs/9699919799/utilities/sed.html) développe cela. Pour tout système spécifique, consultez la page de manuel locale. –

5

Cela dépend. Au sens strict, un conforme à la norme sed ne doit utiliser des expressions régulières de base pour lesquels the standard états:

Les BRE caractères spéciaux et les contextes dans lesquels ils ont leur signification particulière sont les suivantes:

.[\ La période, gauche Le carré et la barre oblique inverse doivent être spéciaux, sauf s'ils sont utilisés dans une expression entre crochets (voir Expression de parenthèse RE). Une expression contenant un '[' qui n'est pas précédé d'une barre oblique inverse et qui ne fait pas partie d'une expression entre parenthèses produit des résultats non définis. L'astérisque doit être spécial, sauf s'il est utilisé dans une expression entre crochets, en tant que premier caractère d'un BRE entier (après un «^» initial, le cas échéant) ou en tant que premier caractère d'une sous-expression (après une initialisation initiale). '^', le cas échéant); voir BREs assortis caractères multiples

^ Le circonflexe est spécial quand il est utilisé comme point d'ancrage (voir BRE Expression Ancrer) ou le premier caractère d'une expression de support (voir RE Expression Support)

$ Le Dollar- le signe doit être spécial lorsqu'il est utilisé comme ancre. La liste complète est donc .[\*^$, mais le contexte est important. En outre, plusieurs sed fournissent des options pour utiliser des expressions régulières étendues (ERE), qui étendront la liste et changeront le contexte dans lequel les caractères sont spéciaux. Par exemple, sans groupements ERE sont formés en utilisant \( et \), mais avec EREs ( et ) par eux-mêmes sont spéciaux et doivent être échappés pour être appariés littéralement.