전역 정규 표현식 인쇄 또는 그냥 grep은 Unix 및 Linux 시스템에서 가장 다양하고 일반적인 명령 중 하나입니다. 이 명령은 단일 또는 다중 입력 파일과 일치하는 패턴 라인을 찾습니다. 결과적으로 일치하는 줄이있는 표준 출력이 나타납니다.
파일을 지정하지 않으면 grep은 판독 값에 표준 입력을 사용하며 다른 명령의 출력 일 가능성이 높습니다. 전체적으로 grep은 파일 이름의 유무에 관계없이 간단한 구문을 제공합니다.
이 기사는 grep 구문에 대한 간단한 개요와 파일 이름과 함께 또는 파일 이름없이 사용할 수있는 몇 가지 기본 명령을 제공합니다.
시작하기 전에
모든 grep 명령은 동일한 구문을 따르며 각 매개 변수에는 특정 기능이 있습니다. 샘플 라인은 다음과 같습니다.
grep 패턴
grep에서 많은 OPTIONS를 사용하여 명령 출력을 제어 할 수 있으며 숫자는 0에서 시작합니다. PATTERN은 적용하려는 검색 패턴을 나타냅니다. FILE의 경우 파일 이름이있는 곳이지만 매개 변수를 0으로 설정할 수 있습니다.
명령 출력에서 문자열 검색
표시된대로 특정 입력 파일을 사용할 필요가 없습니다. grep에서 다른 명령의 출력을 사용하여 패턴과 정확히 일치하는 행을 얻을 수 있습니다. 시스템에서 어떤 프로세스가 활성화되어 있는지 확인하는 데 사용할 수 있습니다. 다음은 샘플 명령 구문입니다.
$ ps -ef | grep www-data
얻을 수있는 출력은 다음과 같아야합니다.
www-data 18247 12675 4 16:00? 00:00:00 php-fpm : 수영장 www
root 18272 17714 0 16:00 pts / 0 00:00:00 grep –color = auto –exclude-dir = .bzr –exclude-dir = CVS –exclude-dir = .git –exclude-dir = .hg –exclude- dir = .svn www-data
www-data 31147 12770 0 Oct22? 00:05:51 nginx : 작업자 프로세스
www-data 31148 12770 0 Oct22? 00:00:00 nginx : 캐시 관리자 프로세스
grep 프로세스를 특징으로하는 명령 줄을 제외시키는 방법이 있습니다. 이를 위해서는 $ ps -ef | grep www-data | grep -v grep 명령.
단어 검색
grep 명령을 사용하여 시스템의 파일에서 특정 단어를 검색 할 수 있습니다. 실제로 전체 단어를 입력 할 필요는 없습니다. 예를 들어 gnu를 사용하면 명령에이 세 글자가 포함 된 모든 단어가 출력됩니다. 명령 구문은 다음과 같습니다.
$ grep gnu / usr / share / 단어
명령을 실행 한 후 출력은 다음과 같아야합니다.
고니
암소 비슷한 일종의 영양
공위 기간
lgnu9d
목질
큰 술병
맥 너슨
물이끼
윙 너트
반면에 특정 단어 나 문자열 만 검색하고 다른 모든 단어는 제외 할 수 있습니다. 이를 위해 구문에 -w 또는 –word – regexp 를 추가해야합니다. 이 경우 예제 명령은 $ grep -w gnu / usr / share / words와 같습니다 .
참고 : 문법을 위해 일부 명령의 끝이 완전히 멈췄습니다. grep에는 문장 부호가 필요하지 않습니다. 명령을 복사 / 붙여 넣기 할 때 제외하십시오.
Grep Case는 민감한가요?
모든 grep 명령은 기본적으로 대소 문자를 구분합니다. 즉, 소문자와 대문자를 사용하면 명령 자체가 달라집니다. 그러나 명령 행에 – i ( - ignore – case )를 추가하고 시스템에서 대문자와 소문자를 모두 검색 할 수 있습니다.
예를 들어, 입력 명령은 $ grep -i Zebra / usr / share / words 처럼 보일 수 있습니다. 얼룩말을 검색 할 때 출력에서 대문자와 소문자의 조합을 일치시킬 수 있습니다.
줄 번호
–line-number 옵션 또는 -n 만 사용하여 특정 검색 패턴과 일치하는 문자열이있는 행 수를 판별하십시오. 결과적으로 앞에 줄 번호가있는 표준 출력이 표시됩니다.
정확한 명령은 $ grep -n 10000 / etc / services와 같습니다 . 실행시 출력은 10000 줄에서 찾은 모든 일치 항목을 제공합니다. 아래 샘플을 확인하십시오.
10423 : NDMP 10000 / TCP
10424 : NDMP 10000 / UDP
폴더의 파일
파일 이름 대신 grep 명령 뒤에 별표를 넣을 수 있습니다. gnu 기준을 다시 사용하면 명령은 다음과 같습니다. $ grep gnu * 출력은 gnu 를 포함하는 파일을 나열합니다. 이러한 종류의 명령은 행을 반환한다는 점에 유의해야합니다.
참고 : grep에서 줄은 지정된 나누기까지 실행되는 일련의 문자를 나타냅니다. 검색을 세분화하지 않으면 출력에 전체 정보 단락이 포함될 수 있습니다.
Grep으로 다음 단계로 나아 가기
이 안내서는 grep으로 수행 할 수있는 작업의 표면을 긁습니다. 모든 확률과 결과를 얻는 데 시간이 걸릴 수 있지만 구문은 매우 간단한 원칙을 따릅니다. 그리고 일부 연습을 통해 파일 이름의 유무에 관계없이 검색을 완벽하게 구체화 할 수 있습니다.