나는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