Using GNU grep, which THREE characters have their special meaning only when preceded by a backslash in a BASIC regular expression, but are special as typed in an EXTENDED one?

LPIC-1 Exam 101-500, objective 103. GNU and Unix commands hard

Draft — not checked yet. This question was written from the published exam objectives and cites the clause it comes from, but nobody has yet read it against that clause and signed for it.

It is kept out of search results and out of mock exams until they have. Read the source below before you take the answer as settled.

The options

Choose 3.

Correct +

Correct. In a BRE you must write \+ for 'one or more'; with grep -E a bare + already means that.

Correct ?

Correct. In a BRE \? means 'zero or one'; a plain ? is a literal question mark. In an ERE ? is the quantifier directly.

Not correct *

Wrong. The asterisk means 'zero or more of the preceding item' in both BRE and ERE without any backslash.

Not correct .

Wrong. The dot matches any single character in both BRE and ERE; escaping it as \. is how you get a literal dot in either.

Correct |

Correct. Alternation is written \| in a BRE and | in an ERE.

Why

BRE and ERE share . * [ ] ^ $ as metacharacters. What differs is + ? { } ( ) | — these need a backslash in a BRE (grep, sed by default) and are special as typed in an ERE (grep -E, egrep, sed -E). POSIX only defines \{ \} and \( \) for BRE; \+ \? \| are GNU extensions, which is another reason reaching for -E is usually clearer than accumulating backslashes.

Where this comes from

Cited
LPI exam objective 103.7
What it says
Distinguish basic from extended regular expression syntax.

Practise this

Reading one question is not practice. The trainer will draw a set from objective 103 and space the ones you get wrong.

Practise LPIC-1 Exam 101-500