Linux에서 GREP 이해: 사용법 및 응용 프로그램

Linux에서 GREP 이해: 사용법 및 응용 프로그램
노트북을 사용하는 사람.

Grep은 패턴 검색을 위해 설계된 컴팩트한 UNIX 도구입니다. 원래 V6 UNIX에서 도입되었으며 Linux, macOS 및 BSD 변형을 포함한 다양한 UNIX 유사 운영 체제에서 필수 도구가 되었습니다. 이 글에서는 Grep의 기본 기능을 살펴보고 일상 업무에 적용하기 위한 실제적인 예를 제공합니다.

Grep의 기본 이해

Grep의 주요 기능은 간단합니다. 입력을 처리하여 일치하는 텍스트 패턴을 식별하고 표시합니다. 이 유틸리티는 거의 모든 일반 텍스트 소스를 검사하여 파일을 직접 스캔하거나 다른 명령의 출력으로 작업할 수 있습니다.

sample.txtGrep을 사용하기 시작하려면 가장 간단한 명령 중 하나는 텍스트 파일에서 읽는 것입니다. 예를 들어, 다음 명령으로 내용을 표시할 수 있습니다 .

텍스트 파일 내에서 특정 단어를 검색할 수도 있습니다.

터미널에서 단어와 일치하는 항목을 grep으로 검색합니다.

또한 Grep은 UNIX 파이프와 결합하여 여러 명령을 단일 작업으로 통합할 수 있습니다.

Grep을 사용하여 인수 없이 전체 파일을 인쇄합니다.

Linux에서 페이저가 어떻게 작동하는지에 대한 통찰력을 얻으려면 GNU less에 대한 치트시트를 참조하세요.

디렉토리에서 파일 검색

Grep의 실용적인 응용 프로그램 중 하나는 디렉토리에서 파일을 찾는 것입니다. ls명령의 출력을 Grep으로 직접 파이프할 수 있습니다.

예를 들어, 이 명령은 다운로드 디렉토리에 있는 모든 JPEG 파일을 확장자를 강조 표시하여 표시합니다.

파일 확장자로 파일 목록을 필터링합니다.

출력을 확장 ls하고 더 복잡한 패턴 매칭을 수행할 수 있습니다. 예를 들어, 다음 명령은 현재 디렉토리에서 1MB보다 작은 모든 파일을 나열합니다.

Grep은 더 큰 포맷 내의 텍스트를 일치시키는 기능입니다.

대소문자 구분 무시

기본적으로 대부분의 UNIX 유사 도구는 대소문자 구분에 민감합니다. 즉, 문자열 “Hello,” “hello,” “hEllo,” 및 “helLo”는 별개의 항목으로 해석됩니다.

Grep은 기본적으로 대소문자를 구분합니다.

이는 특히 단어의 여러 가지 경우가 있는 경우 텍스트 검색을 복잡하게 만들 수 있습니다. 이를 완화하려면 Grep을 -i플래그와 검색어를 함께 사용할 수 있습니다.

Grep의 -i 플래그는 대소문자 구분을 비활성화합니다.

재귀적으로 검색하기

Grep은 여러 파일이나 전체 디렉토리를 동시에 검색할 수 있는 기능이 있습니다. 이는 다양한 파일이 있는 프로젝트를 조사하고 디렉토리 전체에서 특정 텍스트가 나타나는 곳을 찾고자 할 때 특히 유용합니다. 예를 들어, 다음 명령을 사용하여 “sample” 디렉토리에서 “MakeTechEasier”라는 용어를 찾습니다.

Grep의 재귀적 기능을 사용하여 여러 파일을 검색합니다.

플래그를 사용하면 -rGrep이 지정된 디렉토리의 모든 파일을 검사해야 하며, 여기에는 텍스트가 아닌 파일도 포함될 수 있습니다. 이 상황을 피하려면 플래그 -I도 사용하세요.

특정 문자열로 파일 식별

파일 내에서 문자열이 나타나는 위치를 표시하는 것 외에도 Grep은 검색하는 텍스트가 포함된 파일 목록을 생성할 수 있습니다. 이는 발견된 모든 인스턴스를 표시하지 않고도 파일에 특정 콘텐츠가 있는지 확인하고 싶을 때 유용합니다.

이를 달성하려면 다음 플래그와 -r, -l대상 문자열과 검색하려는 디렉토리를 사용하여 Grep을 사용하세요.

Grep은 일치하는 콘텐츠의 파일 경로를 출력합니다.

또한, 여러 검색 조건을 적용하기 위해 Bash 하위 셸에 Grep 명령을 캡슐화할 수 있습니다. 예를 들어, 다음 명령은 “sample” 디렉토리에 있는 “Hello”와 “MakeTechEasier”를 모두 포함하는 파일을 반환합니다.

Grep과 함께 Bash 하위 셸을 사용하여 다중 조건 일치를 수행합니다.

일치하지 않는 결과 공개

표준 검색 외에도 Grep은 지정된 기준을 제외한 결과를 생성할 수도 있습니다. 이 기능은 텍스트 입력에서 오류나 불규칙성을 감지해야 할 때 매우 유용할 수 있습니다.

이를 실행하려면 -v선호하는 옵션과 함께 플래그를 사용합니다. 예를 들어, 다음 명령은 “/etc/nginx” 디렉토리의 모든 파일을 재귀적으로 스캔하고 문자열 “nginx”를 포함하지 않는 모든 줄을 반환합니다.

반전 플래그를 사용하여 특정 문자열을 제외한 모든 문자열과 일치합니다.

단어와 줄 검색

Grep에 특정 패턴에 맞는 문자열 대신 전체 단어나 전체 줄을 검색하도록 지시하는 것도 유익할 수 있습니다. 이 접근 방식은 다양한 단어에 널리 퍼져 있는 문자 시퀀스를 타겟팅할 때 특히 유용합니다. 예를 들어, “it”라는 용어를 검색하면 다른 많은 단어에 나타나기 때문에 수많은 거짓 양성이 발생할 수 있습니다.

이 문제를 해결하려면 -w플래그 뒤에 원하는 단어를 사용하여 Grep을 실행합니다.

Grep을 이용해 전체 단어 일치를 실행합니다.

Grep은 검색 패턴을 포함하는 모든 인스턴스를 반환하는 대신 단어 자체만 출력합니다. 이는 -x플래그를 사용할 때 전체 줄에도 적용되므로 구성 파일에서 구문이나 정확한 줄을 찾는 데 특히 유용합니다.

텍스트 전체 줄과 일치하는 Grep을 실행합니다.

Grep 출력에 줄 번호 통합

줄 번호는 코드 디버깅과 문서 검토에 중요한 역할을 합니다. 특정 줄이나 함수의 위치를 ​​정확히 찾는 과정을 간소화하여 개정 속도를 크게 높여줍니다.

Grep은 출력에 줄 번호를 포함하는 기능을 제공합니다. -n검색어와 함께 플래그를 사용하여 명령을 실행하면 이를 활성화할 수 있습니다.

파일에서 일치 항목의 줄 번호를 표시하는 grep입니다.

UNIX 파이프와 결합하면 Grep의 출력을 정제하여 검색 결과의 줄 번호만 표시할 수 있습니다. 이 접근 방식은 특히 대량의 텍스트를 처리하는 데 유용합니다.

Grep과 UNIX 파이프를 활용해 정교한 출력 처리를 수행합니다.

Grep을 사용한 확장 정규식 사용

Grep은 텍스트 일치를 위한 기본 정규 표현식(BRE)을 주요 메타 문자로 사용합니다. 이는 다양한 작업에 기능적이지만, 특히 패턴 그룹을 조사할 때 사용자는 제한적이라고 느낄 수 있습니다.

기능을 확장하기 위해 많은 Grep 구현은 -E확장 정규 표현식(ERE)의 구문 분석을 활성화하는 플래그를 통합합니다. 예를 들어, 아래 명령에는 플래그 가 필요합니다 -E.

패턴 일치를 위해 Grep과 함께 확장된 정규 표현식을 사용합니다.

-F또한 Grep에는 정규식 기능을 완전히 제거하는 특수 모드가 있습니다. 이를 활성화하려면 플래그 뒤에 간단한 문자열을 붙여 명령을 실행합니다 .

Grep에서 정규 표현식 없이 정확한 문자열 일치.

Grep 출력에 주변 줄 포함

Grep의 강점은 입력이나 파일에서 텍스트가 나타나는 위치를 보여주는 데 있습니다. 그러나 문제 해결 시 정확한 위치만 표시하는 것으로는 충분하지 않을 수 있습니다. 충돌 로그에서 발견되는 것과 같은 문자열을 둘러싼 컨텍스트는 종종 필수적인 통찰력을 제공할 수 있습니다.

추가 컨텍스트를 인쇄하려면 Grep을 -C검색 결과 앞뒤에 표시하려는 줄 수와 플래그를 결합하여 실행할 수 있습니다. 예를 들어 대상 문자열 주위에 5줄을 표시하려면 다음 명령을 사용합니다.

일치된 문자열의 주변 컨텍스트를 표시하는 grep입니다.

-B또한 및 플래그를 사용하여 앞이나 뒤의 줄만 선택적으로 인쇄하여 결과를 맞춤 설정할 수도 있습니다 -A. 예를 들어, 아래 명령은 검색어 뒤에 오는 10줄을 표시합니다.

일치된 문자열 다음에 나오는 줄을 출력합니다.

이제 Grep에 대한 기본 지식과 일반적인 작업에 Grep을 활용하는 방법을 갖추었으므로 명령줄과 더 광범위한 UNIX 생태계를 더 깊이 파고들 준비가 되었습니다. Linux에서 sed를 사용하여 더욱 강력한 텍스트 처리를 하는 방법을 배우면서 더 탐구해 보세요.

이미지 출처: Alejandro Escamilla via Unsplash . 모든 수정 및 스크린샷은 Ramces Red가 제공했습니다.

원천

답글 남기기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다