유닉스에서 정확한 문자열 검색

유닉스에서 정확한 문자열 검색

파일이 있는데,xyz.txt, 한 줄에 하나의 문자열.
검색은 어떻게 하나요?xyz.txt정확히 일치하려면?
예를 들어 입력 문자열을 얻습니다. defabc, 다른 응용 프로그램에서. 발견
되면 defabc반환되어야 합니다.진짜, 다른잘못된. 에서 정규식을 사용할 수 있나요 grep?

예제 파일: xyz.txt:

abc
def
abc_def
def_abc
abcdef
defabc
uvx

답변1

정확한 일치를 찾으려면 이 -F옵션을 사용하십시오 grep(정규 표현식은 꺼짐).

$ grep -F "defabc" xyz.txt
defabc

greptrue 또는 false를 테스트할 수 있도록 적절한 반환 코드를 설정합니다.

$ if grep -qF "defabc" xyz.txt; then echo True; else echo False; fi
True
$ if grep -qF "Defabc" xyz.txt; then echo True; else echo False; fi
False

grep반환 코드 만 설정하려고 하므로 이 옵션은 조용히(일반 출력 생략) -q명령을 내리는 데 사용됩니다 .grep

일치 항목을 전체 단어로 제한

일치하고 싶지만 defabc일치하지 않는 경우 전체 단어로 일치를 제한하는 defabc1옵션을 추가할 수 있습니다 .-w

if grep -qFw "defabc" xyz.txt; then echo True; else echo False; fi

man grep"단어"가 어떻게 grep정의되는지 설명하세요.

-w, --word 정규 표현식
전체 단어를 구성하는 항목이 포함된 행만 선택하십시오. 테스트에서는 일치하는 하위 문자열이 줄의 시작 부분에 있거나 단어를 만들지 않는 문자가 앞에 있어야 한다는 것입니다. 다시 말하지만, 줄 끝에 있어야 하거나 단어를 형성하지 않는 문자가 뒤에 와야 합니다.
단어를 구성하는 문자는 문자, 숫자, 밑줄입니다.

쉘 변수에서 출력 캡처

우리가 사용하는 명령의 출력을 캡처하려면명령 대체그 형태는 $(...)다음 과 같습니다

$ r=$(if grep -qF "defabc" xyz.txt; then echo True; else echo False; fi)
$ echo $r
True

쉘 변수에서 종료 코드 캡처

grep -qF "defabc" xyz.txt
r=$?

r일치하는 항목이 있으면 0, 일치하는 항목이 없으면 1, 또 다른 오류가 발생하면 2입니다.

답변2

Unix의 Korn Shell에서 정확한 표현식을 검색하는 명령

grep -w "SEARCH_EXPRESSION" FILE_TO_BE_SEARCHED

위 명령은 정확한 단어나 검색 표현을 검색합니다.

관련 정보