"정확히 일치"라는 문자열이 두 번 나타나는 파일이 있습니다.
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첫 번째 항목만 표시된다는 의미입니다.