GNU/Linux >> Tutoriels Linux >  >> Linux

Besoin d'échapper aux caractères Regex dans Sed pour être interprétés comme des caractères Regex ?

Il semble par exemple
cat sed_data.txt | sed 's/b[0-9]{3}b/NUMBER/g'
que je dois caractères d'échappement pour former une expression régulière. Dans ce cas, j'ai dû échapper des accolades pour être interprété comme un certain nombre de fois.
Pourquoi ? Je m'attendais à ce que tout soit un caractère regex à moins d'être échappé. C'est à dire. le contraire.

Réponse acceptée :

C'est parce que sed utilise les BRE POSIX (expressions régulières de base) par opposition aux ERE (expressions régulières étendues) auxquelles vous êtes probablement habitué de Perl ou d'amis.

Depuis le sed(1) page de manuel :

REGULAR EXPRESSIONS
       POSIX.2 BREs should be supported, but they aren't completely because of
       performance problems.  The n sequence in a regular expression  matches
       the newline character, and similarly for a, t, and other sequences.

Citation pertinente du lien ci-dessus :

La saveur des expressions régulières de base ou BRE standardise une saveur similaire à celle utilisée par la commande grep UNIX traditionnelle. C'est à peu près la plus ancienne saveur d'expression régulière encore utilisée aujourd'hui. Une chose qui distingue cette saveur est que la plupart des métacaractères nécessitent une barre oblique inverse pour donner au métacaractère sa saveur. La plupart des autres versions, y compris POSIX ERE, utilisent une barre oblique inverse pour supprimer la signification des métacaractères.

Citation textuelle du commentaire de Craig Sanders :

Notez que dans GNU sed au moins, vous pouvez indiquer à sed d'utiliser des expressions rationnelles étendues avec l'option de ligne de commande -r ou –regexp-extended. Ceci est utile si vous voulez éviter d'alourdir votre script sed avec des échappements excessifs.


Linux
  1. Sed peut-il remplacer les caractères de nouvelle ligne ?

  2. Utiliser Sed avec des caractères spéciaux ?

  3. Sed Supprimer les caractères de la nouvelle ligne ?

  4. sed - comment faire des groupes regex en utilisant sed

  5. Comment utiliser l'anticipation pour exclure les caractères spéciaux dans une expression régulière

Initiation aux expressions régulières

Expressions régulières dans Grep (Regex)

Tutoriel Regex pour les exemples Linux (Sed &AWK)

10 exemples pratiques de regex avec grep

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

Expression régulière avec sed