2016-08-05 65 views
1

這正是我試圖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

什麼是您預期的輸出究竟?舉個例子 – kisanme

回答

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

你也可以只做到

grep -n '\.qtrain' *.m 

要獲得 「.qtrain」 任何東西。請注意,你必須避免點,而grepping

1

你只希望它返回「qtrain」?如果是這樣,你可能想使用

grep -no qtrain *.m

如果你希望它只會匹配其中「qtrain」線是唯一的文本,使用

grep -n ^qtrain$ *.m