Sed/BRE-vs-ERE
Next: BRE syntax, Previous: Regular Expressions Overview, Up: sed regular expressions [Contents][Index]
5.2 Basic (BRE) and extended (ERE) regular expression
Basic and extended regular expressions are two variations on the
syntax of the specified pattern. Basic Regular Expression (BRE) syntax is the
default in sed
(and similarly in grep
).
Use the POSIX-specified -E
option (-r
,
--regexp-extended
) to enable Extended Regular Expression (ERE) syntax.
In GNU sed
, the only difference between basic and extended regular
expressions is in the behavior of a few special characters: ‘?
’,
‘+
’, parentheses, braces (‘{}
’), and ‘|
’.
With basic (BRE) syntax, these characters do not have special meaning
unless prefixed with a backslash (‘\
’); While with extended (ERE) syntax
it is reversed: these characters are special unless they are prefixed
with backslash (‘\
’).
Desired pattern | Basic (BRE) Syntax | Extended (ERE) Syntax |
---|---|---|
literal ‘+ ’ (plus sign)
|
$ echo 'a+b=c' > foo $ sed -n '/a+b/p' foo a+b=c |
$ echo 'a+b=c' > foo $ sed -E -n '/a\+b/p' foo a+b=c |
One or more ‘a ’ characters followed by ‘b ’
(plus sign as special meta-character) |
$ echo aab > foo $ sed -n '/a\+b/p' foo aab |
$ echo aab > foo $ sed -E -n '/a+b/p' foo aab |