grep을 사용하여 완전한 단어만 추출할 수 있습니까? [복사]

grep을 사용하여 완전한 단어만 추출할 수 있습니까? [복사]

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

관련 정보