grep 명령을 사용하면 다른 단어의 일부라도 해당 단어가 모두 선택됩니다. 예를 들어, grep을 사용하여 "the"라는 단어를 찾으면 "theatre"에서 "the"도 강조 표시됩니다.
부분 단어가 아닌 완전한 단어만 선택하도록 grep 명령을 조정하는 방법이 있습니까?
답변1
-w, --word-regexp
Select only those lines containing matches that form whole
words. The test is that the matching substring must either be
at the beginning of the line, or preceded by a non-word
constituent character. Similarly, it must be either at the end
of the line or followed by a non-word constituent character.
Word-constituent characters are letters, digits, and the
underscore.
~에서man grep
답변2
다음을 사용할 수도 있습니다.
echo "this is the theater" |grep --color '\bthe\b'
단어의 경우 -w와 동일합니다.
그러나 여러 패턴을 검색해야 하는 경우에는 \b를 사용할 수 있으며, 그렇지 않은 경우 -w를 사용하면 모든 패턴이 단어로 처리됩니다.
예를 들어:
grep -w -e 'the' -e 'lock'
자물쇠와 자물쇠는 강조 표시되지만 열쇠 잠금 장치/자물쇠 등은 강조 표시되지 않습니다.
\b를 사용하면 각 -e 패턴을 다르게 처리할 수 있습니다.
답변3
\<
토큰(또는)을 사용하여 단어의 시작(또는 끝)이 있는지 테스트할 수 있습니다 \>
.
그러므로,
grep "\<the\>" << .
the cinema
a cinema
the theater
a theater
breathe
.
주어진
the cinema
the theater