grep,如何搜索确切的模式?

时间:2016-08-05 17:12:38

标签: linux bash grep

这就是我试过的

grep -n 'qtrain' *.m

但我也得到了

SKSC.m:195:model.qtrain = model.qtrainExtra(:,k-1);
SKSC.m:196:model.mqtrain = model.mqtrainExtra{k-1};
SKSC.m:197:model.sqtrain = model.sqtrainExtra{k-1};

如何摆脱其他人? 我只想与我的模式完全匹配。

3 个答案:

答案 0 :(得分:3)

如果按“确切模式”表示其中只包含qtrain的完整行, 然后使用-x标志:

grep -nx qtrain *.m

这只会匹配包含“qtrain”的行,而不包含任何其他行。

如果用“确切模式”表示匹配“qtrain”但不匹配“blahqtrain”或“qtrainblah”,那么您可以使用-w来匹配整个单词

grep -nw qtrain *.m

这只会匹配输入中的这一行:

SKSC.m:195:model.qtrain = model.qtrainExtra(:,k-1);

顺便说一句,这是使用正则表达式的另一种等效方法:

grep -n '\<qtrain\>' *.m

来自man grep

  

符号\<\>分别匹配空字符串          一个词的开头和结尾。

答案 1 :(得分:1)

您也可以这样做

grep -n '\.qtrain' *.m

用“.qtrain”获取任何内容。请注意,在grepping时必须转义点

答案 2 :(得分:1)

你只想要它返回&#34; qtrain&#34;?如果是这样,您可能想要使用

grep -no qtrain *.m

如果你希望它只匹配&#34; qtrain&#34;是唯一的文字,使用

grep -n ^qtrain$ *.m