Linux에서 GREP 이해: 사용법 및 응용 프로그램
Grep은 패턴 검색을 위해 설계된 컴팩트한 UNIX 도구입니다. 원래 V6 UNIX에서 도입되었으며 Linux, macOS 및 BSD 변형을 포함한 다양한 UNIX 유사 운영 체제에서 필수 도구가 되었습니다. 이 글에서는 Grep의 기본 기능을 살펴보고 일상 업무에 적용하기 위한 실제적인 예를 제공합니다.
Grep의 기본 이해
Grep의 주요 기능은 간단합니다. 입력을 처리하여 일치하는 텍스트 패턴을 식별하고 표시합니다. 이 유틸리티는 거의 모든 일반 텍스트 소스를 검사하여 파일을 직접 스캔하거나 다른 명령의 출력으로 작업할 수 있습니다.
sample.txt
Grep을 사용하기 시작하려면 가장 간단한 명령 중 하나는 텍스트 파일에서 읽는 것입니다. 예를 들어, 다음 명령으로 내용을 표시할 수 있습니다 .
텍스트 파일 내에서 특정 단어를 검색할 수도 있습니다.
또한 Grep은 UNIX 파이프와 결합하여 여러 명령을 단일 작업으로 통합할 수 있습니다.
Linux에서 페이저가 어떻게 작동하는지에 대한 통찰력을 얻으려면 GNU less에 대한 치트시트를 참조하세요.
디렉토리에서 파일 검색
Grep의 실용적인 응용 프로그램 중 하나는 디렉토리에서 파일을 찾는 것입니다. ls
명령의 출력을 Grep으로 직접 파이프할 수 있습니다.
예를 들어, 이 명령은 다운로드 디렉토리에 있는 모든 JPEG 파일을 확장자를 강조 표시하여 표시합니다.
출력을 확장 ls
하고 더 복잡한 패턴 매칭을 수행할 수 있습니다. 예를 들어, 다음 명령은 현재 디렉토리에서 1MB보다 작은 모든 파일을 나열합니다.
대소문자 구분 무시
기본적으로 대부분의 UNIX 유사 도구는 대소문자 구분에 민감합니다. 즉, 문자열 “Hello,” “hello,” “hEllo,” 및 “helLo”는 별개의 항목으로 해석됩니다.
이는 특히 단어의 여러 가지 경우가 있는 경우 텍스트 검색을 복잡하게 만들 수 있습니다. 이를 완화하려면 Grep을 -i
플래그와 검색어를 함께 사용할 수 있습니다.
재귀적으로 검색하기
Grep은 여러 파일이나 전체 디렉토리를 동시에 검색할 수 있는 기능이 있습니다. 이는 다양한 파일이 있는 프로젝트를 조사하고 디렉토리 전체에서 특정 텍스트가 나타나는 곳을 찾고자 할 때 특히 유용합니다. 예를 들어, 다음 명령을 사용하여 “sample” 디렉토리에서 “MakeTechEasier”라는 용어를 찾습니다.
플래그를 사용하면 -r
Grep이 지정된 디렉토리의 모든 파일을 검사해야 하며, 여기에는 텍스트가 아닌 파일도 포함될 수 있습니다. 이 상황을 피하려면 플래그 -I
도 사용하세요.
특정 문자열로 파일 식별
파일 내에서 문자열이 나타나는 위치를 표시하는 것 외에도 Grep은 검색하는 텍스트가 포함된 파일 목록을 생성할 수 있습니다. 이는 발견된 모든 인스턴스를 표시하지 않고도 파일에 특정 콘텐츠가 있는지 확인하고 싶을 때 유용합니다.
이를 달성하려면 다음 플래그와 -r
, -l
대상 문자열과 검색하려는 디렉토리를 사용하여 Grep을 사용하세요.
또한, 여러 검색 조건을 적용하기 위해 Bash 하위 셸에 Grep 명령을 캡슐화할 수 있습니다. 예를 들어, 다음 명령은 “sample” 디렉토리에 있는 “Hello”와 “MakeTechEasier”를 모두 포함하는 파일을 반환합니다.
일치하지 않는 결과 공개
표준 검색 외에도 Grep은 지정된 기준을 제외한 결과를 생성할 수도 있습니다. 이 기능은 텍스트 입력에서 오류나 불규칙성을 감지해야 할 때 매우 유용할 수 있습니다.
이를 실행하려면 -v
선호하는 옵션과 함께 플래그를 사용합니다. 예를 들어, 다음 명령은 “/etc/nginx” 디렉토리의 모든 파일을 재귀적으로 스캔하고 문자열 “nginx”를 포함하지 않는 모든 줄을 반환합니다.
단어와 줄 검색
Grep에 특정 패턴에 맞는 문자열 대신 전체 단어나 전체 줄을 검색하도록 지시하는 것도 유익할 수 있습니다. 이 접근 방식은 다양한 단어에 널리 퍼져 있는 문자 시퀀스를 타겟팅할 때 특히 유용합니다. 예를 들어, “it”라는 용어를 검색하면 다른 많은 단어에 나타나기 때문에 수많은 거짓 양성이 발생할 수 있습니다.
이 문제를 해결하려면 -w
플래그 뒤에 원하는 단어를 사용하여 Grep을 실행합니다.
Grep은 검색 패턴을 포함하는 모든 인스턴스를 반환하는 대신 단어 자체만 출력합니다. 이는 -x
플래그를 사용할 때 전체 줄에도 적용되므로 구성 파일에서 구문이나 정확한 줄을 찾는 데 특히 유용합니다.
Grep 출력에 줄 번호 통합
줄 번호는 코드 디버깅과 문서 검토에 중요한 역할을 합니다. 특정 줄이나 함수의 위치를 정확히 찾는 과정을 간소화하여 개정 속도를 크게 높여줍니다.
Grep은 출력에 줄 번호를 포함하는 기능을 제공합니다. -n
검색어와 함께 플래그를 사용하여 명령을 실행하면 이를 활성화할 수 있습니다.
UNIX 파이프와 결합하면 Grep의 출력을 정제하여 검색 결과의 줄 번호만 표시할 수 있습니다. 이 접근 방식은 특히 대량의 텍스트를 처리하는 데 유용합니다.
Grep을 사용한 확장 정규식 사용
Grep은 텍스트 일치를 위한 기본 정규 표현식(BRE)을 주요 메타 문자로 사용합니다. 이는 다양한 작업에 기능적이지만, 특히 패턴 그룹을 조사할 때 사용자는 제한적이라고 느낄 수 있습니다.
기능을 확장하기 위해 많은 Grep 구현은 -E
확장 정규 표현식(ERE)의 구문 분석을 활성화하는 플래그를 통합합니다. 예를 들어, 아래 명령에는 플래그 가 필요합니다 -E
.
-F
또한 Grep에는 정규식 기능을 완전히 제거하는 특수 모드가 있습니다. 이를 활성화하려면 플래그 뒤에 간단한 문자열을 붙여 명령을 실행합니다 .
Grep 출력에 주변 줄 포함
Grep의 강점은 입력이나 파일에서 텍스트가 나타나는 위치를 보여주는 데 있습니다. 그러나 문제 해결 시 정확한 위치만 표시하는 것으로는 충분하지 않을 수 있습니다. 충돌 로그에서 발견되는 것과 같은 문자열을 둘러싼 컨텍스트는 종종 필수적인 통찰력을 제공할 수 있습니다.
추가 컨텍스트를 인쇄하려면 Grep을 -C
검색 결과 앞뒤에 표시하려는 줄 수와 플래그를 결합하여 실행할 수 있습니다. 예를 들어 대상 문자열 주위에 5줄을 표시하려면 다음 명령을 사용합니다.
-B
또한 및 플래그를 사용하여 앞이나 뒤의 줄만 선택적으로 인쇄하여 결과를 맞춤 설정할 수도 있습니다 -A
. 예를 들어, 아래 명령은 검색어 뒤에 오는 10줄을 표시합니다.
이제 Grep에 대한 기본 지식과 일반적인 작업에 Grep을 활용하는 방법을 갖추었으므로 명령줄과 더 광범위한 UNIX 생태계를 더 깊이 파고들 준비가 되었습니다. Linux에서 sed를 사용하여 더욱 강력한 텍스트 처리를 하는 방법을 배우면서 더 탐구해 보세요.
이미지 출처: Alejandro Escamilla via Unsplash . 모든 수정 및 스크린샷은 Ramces Red가 제공했습니다.
답글 남기기