grep은 공백으로 둘러싸인 다른 일치 항목에 포함되지 않은 정확한 단어만 일치합니다.

grep은 공백으로 둘러싸인 다른 일치 항목에 포함되지 않은 정확한 단어만 일치합니다.

"정확히 일치"라는 문자열이 두 번 나타나는 파일이 있습니다.

this is an 'exact match'
this is 'another exact match' line

이렇게 하면 grep -w 'exact match' file.txt두 가지 경우가 모두 발생합니다.

첫 번째 항목(정확히 일치)만 받고 싶습니다.

나는 또한 다음을 시도했습니다.

  • grep -e '\bexact match\b' file.txt
  • grep -e '\<exact match\>' file.txt

그러나 둘 다 바람직하지 않은 두 가지 상황을 만들어냅니다.

grep을 사용하여 이를 수행하는 올바른 방법은 무엇입니까?

답변1

작은따옴표를 일치시키려면 패턴에 다음을 포함하십시오.

$ grep -F "'exact match'" file
this is an 'exact match'

작은따옴표로 묶인 문자열에는 작은따옴표가 포함될 수 없기 때문에 패턴 주위에 큰따옴표를 사용하고 있습니다. 쿼리 문자열이 큰따옴표로 묶여 있기 때문에 문자열 내의 모든 쉘 변수 또는 명령 대체가 확장됩니다.

다른 방법:

$ grep -F "'"'exact match'"'" file
this is an 'exact match'

이는 작은따옴표 주위에 큰따옴표만 사용하고 문자열에는 작은따옴표를 사용합니다 exact match. 문자열 등의 쉘 변수아니요확대됩니다.

\''exact match'\'작은 따옴표로 묶인 문자열을 사용하고 양쪽에 있는 문자 그대로의 작은 따옴표를 "이스케이프" 할 수도 있지만 개인적으로 조금 보기 흉하다고 생각합니다.

답변2

결과의 첫 번째 동시성만 추출하려면 다음으로 충분합니다.

grep -m1 'exact match' file.txt

-중동시성 수를 지정하고1첫 번째 항목만 표시된다는 의미입니다.

관련 정보