web-dev-qa-db-ja.com

別の行を返すGrep検索

これは私のgrep検索です

 grep 'Invoker_Slark*' true_pairscore.txt

ただし、行Invoker_Slardarを返します。ファイルにInvoker_Slarkが含まれていても。何故ですか?

7
Ashwin

その理由は、Invoker_Slark*が正規表現と見なされ、k*が「kの出現が0回以上」を意味するためです。

これは、*が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

12
Hauke Laging