Issue
This was my attempt:
grep -i 'th[\D]\{1,\}'
I'm on hackerRank. I have this file that is delivered to my stdin.
I need as a result lines that contains :
the
that
then
those
Solution
In a POSIX BRE pattern, when you use a "shorthand character class" like \s
, \w
, even in GNU grep
, these escape sequences are treated as separate chars, a backslash and a letter. [\D]\{1,\}
matches one or more D
letters or \
chars.
You need to match exactly the words you are told to:
grep -i -E '\<(the|that|then|those)\>'
Here,
-i
- enables case insensitive matching-E
- enables POSIX ERE syntax\<
- open word boundary(the|that|then|those)
- s capturing group matching any of the word in between|
(OR) alternation operators\>
- close word boundary.
Answered By - Wiktor Stribiżew