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.
More questions on this objective
- A user starts a new terminal window in a running graphical desktop session, which launches bash as an interactive shell that is NOT a login shell. Which file in the user's home directory does bash read in that case? machine-checked
- In bash, which history expansion re-runs the entire previous command line? machine-checked
- Which bash command prints the literal five characters $USER instead of the current user name? machine-checked
- You want /opt/bin searched for executables, after all the directories already in PATH, in the current bash session and in every command started from it. Which command does that? machine-checked
- There is a passwd manual page in section 1 (the command) and another in section 5 (the /etc/passwd file format). Which command opens the section 5 page? machine-checked
- Select the TWO true statements about shell variables and the environment in bash. machine-checked