这是我的 grep 搜索
grep 'Invoker_Slark*' true_pairscore.txt
但它返回该行Invoker_Slardar
。即使该文件包含Invoker_Slark
.这是为什么?
答案1
原因是它Invoker_Slark*
被认为是正则表达式,其中的k*
意思是:“k 出现零次或多次”
这与 shell 通配模式不同,后者*
表示 0 个或多个字符。
要搜索Invoker_Slark
该行中的任何位置,您需要:
grep 'Invoker_Slark' true_pairscore.txt
或者grep -x '.*Invoker_Slark.*' true_pairscore.txt
如果搜索字符串必须位于行的开头,则必须更改为:
grep '^Invoker_Slark' true_pairscore.txt
或者grep -x 'Invoker_Slark.*' true_pairscore.txt