logo

예제가 포함된 Linux/Unix의 Grep 명령

'grep' 명령은 다음을 의미합니다. '전역 정규식 인쇄' . grep 명령은 파일 내용을 필터링하여 검색을 쉽게 만듭니다.

정규식과 동일한 줄에 대한 일반 텍스트 데이터 그룹을 검색하는 명령줄 유틸리티입니다. 이름 '꽉 붙잡음' 는 동일한 효과를 포함하는 명령, 즉 ed에서 나옵니다. 원래 grep은 Unix 운영 체제용으로 설계되었지만 나중에 모든 Unix 계열 시스템과 OS 9와 같은 일부 시스템에서 사용할 수 있게 되었습니다.

grep 필터는 특정 문자 패턴에 대한 파일을 찾고 해당 패턴을 포함하는 모든 줄을 표시합니다. 문자가 쉘에 대한 특별한 의미를 갖는 패턴 매개변수에 나타나면 따옴표로 묶어야 합니다. 일반적으로 패턴 매개변수가 공통 문자열이 아닌 경우 전체 패턴을 하나의 따옴표로 묶어야 합니다.

[a-z]와 같은 표현식에서 빼기 기호(-) cml은 현재 조합 순서를 기준으로 범위를 설명합니다. 조합 순서는 사용할 문자 범위의 동등한 클래스를 지정할 수 있습니다. grep 명령은 언급된 파일이 없을 때 stdin을 가정합니다.

이 패턴을 파일 내부에 있는 정규식이라고 합니다. 패턴은 egrep 또는 ed 명령 형식의 제한된 정규식입니다. grep 명령은 견고한 비결정적 알고리즘을 적용합니다. 대용량 로그 파일을 필터링해야 할 때 유용합니다.

grep의 간략한 역사

제목이 지정되기 전에 grep은 다음에 의해 지정된 기밀 유틸리티였습니다. 켄 톰슨 여러 패턴에 대한 파일을 찾으려면 그 존재는 알려지지 않았지만, 더그 맥킬로이 Thompson에게 그러한 기능을 지정하도록 요청했습니다. 그는 하룻밤 사이에 그러한 유용성을 생각할 것이라고 대답했습니다. Thompson은 다음과 같은 프로그램을 통해 약 1시간 동안 습지를 개선하고 수정했습니다. '에스' (또는 검색). 그는 다음날 Mcllroy에게 그 기능을 제시했고 Mcllroy는 자신이 원하는 것과 똑같다고 말했습니다. Thompson의 설명은 grep 명령이 하룻밤 사이에 지정되었다는 믿음을 설명할 수 있습니다.

Thompson은 지원하기 위해 PDP-11 어셈블리 언어의 초기 버전을 지정했습니다. 리 E. 맥모한 Federalist Papers 텍스트를 확인하여 개별 논문의 저자를 결정합니다. ed 텍스트 편집기는 정규식을 지원했지만 그렇게 큰 텍스트에는 사용할 수 없었습니다. Thompson은 해당 코드를 독립형 도구에 복사했습니다. 그는 ed에서 이름을 선택했습니다. grep 명령은 설명된 패턴과 동일하게 모든 줄을 인쇄합니다. 먼저, 버전 4 Unix에는 grep이 추가되었습니다. '일반적으로 프로토타입 소프트웨어 도구로 인용됩니다' , Mcllroy는 다음과 같은 grep을 승인했습니다. '돌이킬 수 없이 뿌리내린다' 유닉스에서 톰슨의 도구 철학.

grep의 구현

다양한 소프트웨어 개발 환경 및 운영 체제에는 다양한 grep 구현이 있습니다. 초기 버전에는 Unix 7 버전에 도입된 fgrep 및 egrep이 포함되었습니다. egrep 버전은 Ken Thompson의 원래 정규식 구현 이후 Alfred Aho가 포함시킨 확장 정규식 구문을 지원합니다. fgrep 버전은 다음과 같은 고정 문자열 목록을 찾습니다. Aho-Corasick 문자열 일치 알고리즘 . 이러한 버전 바이너리는 최신 시스템에서 사용할 수 있으며 일반적으로 POSIX 시스템에 배포되는 동안 추가된 올바른 플래그를 사용하여 grep에 연결하거나 쉘 스크립트 grep을 호출합니다.

다른 명령에는 다음이 포함됩니다. '꽉 붙잡음' 일반적으로 정규식 일치에 의존하는 도구를 찾는다는 것을 나타내는 단어입니다. 예를 들어, 유틸리티, 즉 'pgrep' , 제공된 정규식과 제목이 동일한 프로세스를 보여줍니다.

  • Grep은 목록의 특정 속성을 즐겁게 하는 요소를 검색하는 내장 함수의 제목입니다. 프로그래밍 언어.
  • 일반적으로 이 고차 함수는 다음과 같이 호출됩니다. '필터' 또는 '어디' 다른 언어로.
  • 명령, 즉 pcregrep 는 Perl 정규식 구문을 활용하는 grep 구현입니다. -P 플래그를 사용하여 동일한 기능을 grep GNU 버전에 추가할 수 있습니다.
  • 또한 grep 포트(예: GnuWin32 그리고 시그윈 )는 Microsoft Windows에서 실행됩니다. 일부 Windows 버전에서는 동일한 findstr 또는 qgrep 명령을 제공합니다.
  • 또한 grep 명령은 MSX-DOS 2 버전용 ASCII MSX-DOS2 도구의 일부입니다.
  • fgrep, egrep 및 grep 명령이 IBM i OS에 제공되었습니다.
    Adobe InDesign 소프트웨어에는 'GREP' 탭 변경/찾기 대화 상자에 GREP 기능(CS3 버전부터)이 있으며 'GREP 스타일' 단락 스타일.

Linux에 grep을 설치하는 방법은 무엇입니까?

Grep은 거의 모든 Linux 배포판에 사전 설치되어 제공됩니다. 그러나 시스템에 없는 경우 터미널 창에서 아래 명령을 사용하여 설치할 수 있습니다.

 $ sudo apt-get install grep 

파이프로 grep

'grep' 명령은 일반적으로 파이프와 함께 사용됩니다. (|) .

자바 오픈 파일

통사론:

 command | grep 

예:

 cat marks.txt | grep 9 

Linux Grep 필터1

위의 스냅샷을 보면 grep 명령이 '9'를 포함하는 모든 데이터를 필터링합니다.

파이프 없이 grep

파이프 없이도 사용할 수 있습니다.

통사론:

 grep 

예:

 grep 9 marks.txt 

Linux Grep 필터2

위의 스냅샷을 보면 grep 명령은 파이프 없이 이전 예제와 동일한 작업을 수행합니다.

grep 옵션

    grep -vM: 'grep -v' 명령은 지정된 단어와 일치하지 않는 줄을 표시합니다.

    통사론:

     grep -v 

    예:

     grep -v 9 marks.txt 

    Linux Grep 필터3

    위의 스냅샷을 보세요. 'grep -v 9 mark.txt' 검색어 '9'가 포함되지 않은 행을 표시합니다.

    grep -i: 'grep -i' 명령은 대소문자를 구분하지 않고 출력을 필터링합니다.

    통사론:

     grep -i 

    예:

     grep -i red exm.txt 

    Linux Grep 필터4

    위의 스냅샷을 보세요. 'grep -i 빨간색 exm.txt' 대문자든 소문자든 'red'가 포함된 모든 줄을 표시합니다.

    grep -A/ grep -B/ grep -C

    grep -A 명령은 다음을 표시하는 데 사용됩니다. 결과 뒤의 줄 .

    grep -B 명령은 다음을 표시하는 데 사용됩니다. 결과 앞 줄 .

    grep -C 명령은 다음을 표시하는 데 사용됩니다. 뒤의 줄과 앞의 줄 결과.

    (A1, A2, A3.....)(B1, B2, B3....)(C1, C2, C3....)을 사용하여 원하는 수의 행을 표시할 수 있습니다.

    통사론:

     grep -A grep -B grep -C 

    예:

    웜퍼스 월드
     grep -A1 yellow exm.txt grep -B1 yellow exm.txt grep -C1 yellow exm.txt 

    Linux Grep 필터5

    위의 스냅샷을 보세요. 'grep -A1 노란색 exm.txt' 검색된 줄을 다음 후속 줄과 함께 표시합니다. 명령 'grep -B1 노란색 exm.txt' 하나의 선행 라인과 명령으로 검색된 라인을 표시합니다. 'grep -C1 노란색 exm.txt' 검색된 라인은 이전 라인과 후속 라인이 하나씩 표시됩니다.