我有一个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