Звездочка - это просто оператор повторения , но вам нужно указать ему, что вы повторяете. /*abc*/
соответствует строке, содержащей ab и ноль или более c (потому что вторая * находится на c; первая бессмысленна, потому что ей нечего повторять). Если вы хотите сопоставить что-либо, вам нужно сказать .*
- точка означает любой символ (в рамках определенных правил ). Если вы хотите просто сопоставить abc, вы можете просто сказать grep 'abc' myFile
. Для более сложного соответствия вам необходимо использовать .*
- grep 'abc.*def' myFile
будет соответствовать строке, содержащей abc, за которой следует def с чем-то, необязательно между ними.
Обновление на основе комментария:
*
в регулярном выражении не совсем то же самое, что * в консоли. В консоли * является частью конструкции glob и просто действует как подстановочный знак (например ls *.log
, перечислит все файлы, которые заканчиваются на .log). Однако в регулярных выражениях * является модификатором, что означает, что он применяется только к предшествующему ему символу или группе. Если вы хотите, чтобы * в регулярных выражениях действовал как подстановочный знак, вам необходимо использовать, .*
как упоминалось ранее: точка является подстановочным знаком, а звездочка при изменении точки означает поиск одной или нескольких точек; т.е. найти одного или нескольких персонажей.