我怎样才能 grep 有选项 -w 的两件事?

sys*_*end 4 linux grep regular-expression

我有一个json文件,我想从中获取使用grep. 假设我试图从 valuesfoo和获取数据bar,问题是它bar也匹配,megabar所以我必须用 option 来grep它-w
当试图同时找到它们时,问题就出现了,因为我必须grep为一个值另一个值。
这个问题,我设法更接近我正在寻找的东西,但我的结果是这样的:

grep -E '(foo|-w bar)' file
 "foo": "59766",
 "foo": "59770",
 "foo": "59774",
 "foo": "59778",
 "foo": "59782",
 "foo": "59786",
Run Code Online (Sandbox Code Playgroud)

关于如何做到这一点的任何想法?

Jig*_*aga 14

字边界具有类似的效果-w,但也可以使用作为表达式的一部分。

'\b'
匹配单词边缘的空字符串。
[...]
'\<'
匹配单词开头的空字符串。
'\>'
匹配单词末尾的空字符串。

bar仅当它是整个单词时匹配,但foo在任何地方(包括更长的单词内):

grep -E 'foo|\<bar\>'
Run Code Online (Sandbox Code Playgroud)