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
CodePudding user response:
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.
