y*
, 1*
и X*
в конце последних трех регулярных выражений будут соответствовать нулю или более y
, 1
и X
соответственно.
В конце входной строки somestringthing
у вас действительно есть ноль или более этих символов(ровно ноль ), так что все три выражения совпадают.
Если вы хотите сопоставить один или несколько y
в конце строки, используйте y+
или y{1,}
в расширенном регулярном выражении или yy*
или y\{1,\}
в базовое регулярное выражение(grep
без-E
):
echo somestringthing | grep -E 'somestringthingy+'
(это не производит вывода)
Также обратите внимание, что egrep
устарел, и вы должны использовать grep -E
. Если вы хотите сопоставить только полные слова, используйте grep -E -w
(, для этого потребуется граница слова в начале и конце совпадения во входных данных ).