我怎样才能 grep 两个有选项 -w 的东西?

我怎样才能 grep 两个有选项 -w 的东西?

我有一个json文件,我想使用 来获取数组中两个项目的值grep。假设我正在尝试从值foo和获取数据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",

关于如何做有什么想法吗?

答案1

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

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

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

grep -E 'foo|\<bar\>'

答案2

鉴于 foo 将在与 foo 相同的上下文中使用并且还匹配完整单词,最简单的方法是:

grep -E -w '(foo|bar)' file

相关内容