2017-04-21 41 views
0

我必須打印與文件中的確切單詞匹配的行號。所以我使用grep -w命令,但我得到多個匹配。如何獲得與我的搜索查詢完全匹配的行號?

例如

 grep -nw "\babc\b" /tmp/test.json 
272:{"name": "abc", "imagen": "Application1.png"}, 
273:{"name": "abc-bcdgroup-deSSL", "imagen": "Application1.png"}, 
274:{"name": "abc-fb-na", "imagen": "Application1.png"}, 
275:{"name": "abc-gf3-bmw-comSSL", "imagen": "Application1.png"}, 

如果我搜索ABC,那麼它應該只打印

272:{"name": "abc", "imagen": "Application1.png"} 

對此有何建議?

+0

'grep -w'將'-'視爲非單詞字符,所以'abc-bcd'匹配'\ babc \ b',如預期的那樣。如果「word」的定義是「由雙引號限定的字符串」,那麼'grep -w'是錯誤的工具。你對「單詞」的定義是什麼? –

回答

1

試試下面的命令:

grep -nw "\"abc\"" /tmp/test.json 
+0

我認爲這是OP正在尋找的東西,但是我想知道類似'{「name」:「def」abc「,」imagen「:」Application1.png「}的輸入, –

0

嘗試用開始和結束錨,

grep -nw "^abc$" /tmp/test.json 
0

您是否嘗試過與-P

$ grep -P '(^|\s)\Kabc(?=\s|$)' /tmp/test.json