Grep 搜索返回不同的行

Ash*_*win 7 grep regular-expression

这是我的 grep 搜索

 grep 'Invoker_Slark*' true_pairscore.txt
Run Code Online (Sandbox Code Playgroud)

但它返回 line Invoker_Slardar。即使该文件包含Invoker_Slark. 这是为什么?

Hau*_*ing 12

原因是它Invoker_Slark*被认为是一个正则表达式,其中的k*意思是:“k 的零次或多次出现”

这与 shell globbing 模式不同,后者*意味着 0 个或多个字符。

要搜索行中的Invoker_Slark任何位置,您需要:

  1. grep 'Invoker_Slark' true_pairscore.txt 或者

  2. grep -x '.*Invoker_Slark.*' true_pairscore.txt

如果搜索字符串必须位于行首,则必须将其更改为:

  1. grep '^Invoker_Slark' true_pairscore.txt 或者

  2. grep -x 'Invoker_Slark.*' true_pairscore.txt