Defining ERE patterns
We saw how easy it is to define BRE patterns. Now, we will see some ERE patterns, which are more powerful.
ERE engines understand the following patterns besides BRE patterns:
- Question marks
- Plus signs
- Curly braces
- Pipe characters
- Expression grouping
By default, AWK supports ERE patterns, and sed needs -r
to understand these patterns.
The question mark
The question mark matches the existence of the preceding character or character class zero or one time only:
$ echo "tt" | awk '/to?t/{print $0}' $ echo "tot" | awk '/to?t/{print $0}' $ echo "toot" | awk '/to?t/{print $0}' $ echo "tt" | sed -r -n '/to?t/p' $ echo "tot" | sed -r -n '/to?t/p' $ echo "toot" | sed -r -n '/to?t/p'

In the first two examples, the character o
exists zero and one time, whereas in the third example, it exists two times, which doesn't match the pattern
In the same way, you can use the question mark with the character class:
$ echo "tt" | awk '/t[oa]?t/{print $0}' $ echo "tot" | awk '/t[oa]?t/{print $0}' $ echo...