You must match one or more consecutive digits using grep with BASIC regular expressions (no -E). Which pattern is correct?

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

Machine-checked — no person has signed for it. This question was read against the source cited below by an automated pass, which found no contradiction. That is a weaker claim than it sounds: the same kind of process wrote the question, so it can confirm its own mistake.

Treat it as a good draft rather than as settled fact, and read the source below before you rely on it. It is not used in mock exams here — only questions a person has signed for are.

How these questions are written — where each question comes from, what the verification ledger records, and what happens when one is found wrong.

The options

Not correct grep '[0-9]\*' file

Wrong. \* escapes the asterisk into a literal '*', so this looks for a digit followed by a star. Even unescaped, '[0-9]*' means 'zero or more digits', which matches the empty string and so matches every line.

Not correct grep '[0-9]+' file

Wrong with BRE. Unescaped + is a literal plus sign here, so this matches a digit followed by an actual '+' character. It would be correct with grep -E.

Correct grep '[0-9]\+' file

Correct. In a basic regular expression the + quantifier must be escaped as \+ to act as 'one or more'. This is a GNU extension, but it is the standard behaviour of GNU grep.

Not correct grep '\d+' file

Wrong. \d is Perl-style shorthand supported by tools like grep -P or pcregrep, not by basic or extended POSIX regular expressions.

Why

In basic regular expressions the metacharacters + ? { } ( ) | need a backslash to take on their special meaning; . * [ ] ^ $ are special without one. Extended regular expressions (grep -E, egrep) invert this: + ? { } ( ) | are special as typed. The POSIX-portable BRE alternative here is '[0-9][0-9]*'. Anchors behave the same in both dialects: ^ matches the start of a line and $ the end, so '^$' finds empty lines.

Where this comes from

Cited
LPI exam objective 103.7
What it says
Understand the difference between basic and extended regular expressions.

Practise this

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

Practise LPIC-1 Exam 101-500

More questions on this objective

All questions on GNU and Unix commands

Practise LPIC-1 Exam 101-500