2017-04-21 69 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 
相关问题