grep, pgrep, egrep, fgrep의 차이점은 무엇입니까?


답변:


85

grep, pgrep, egrep 및 fgrep (Linux)의 차이점 :

grep

grep은 "Global Regular Expressions Print"의 약자입니다. grep은 지정된 파일을 한 줄씩 스캔하여 패턴이 포함 된 줄을 반환하는 프로그램입니다. 패턴은 문자를 메타 문자로 해석하여 문자열 세트를 지정하는 표현식입니다. 예를 들어 별표 메타 문자 (*)는 "0 개 이상의 선행 요소"를 의미하는 것으로 해석됩니다. 이를 통해 사용자는 grep 명령에 일련의 짧은 문자와 메타 문자를 입력하여 컴퓨터에서 파일이 일치하는 행을 보여줄 수 있습니다.

표준 grep 명령은 다음과 같습니다.

grep <flags> '<regular expression>' <filename>

grep은 검색 결과를 화면에 인쇄하고 (stdout) 다음 종료 값을 반환합니다.

0    A match was found.
1    No match was found.
>1   A syntax error was found or a file was inaccessible 
     (even if matches were found).

몇 가지 일반적인 플래그는 다음과 같습니다. -c성공적인 일치 수를 계산하고 실제 일치 를 인쇄 -i하지 않고, 대소 문자를 구분하지 않고, -n일치하는 각 출력 전에 행 번호를 인쇄하고 -v, 정규 표현식을 보완합니다 (예 : 일치하지 않음), -l식과 일치하는 줄로 파일의 파일 이름을 인쇄하십시오.

egrep

egrep은 "Extended Global Regular Expressions Print"의 약자입니다.

egrep에서 'E'는 패턴을 정규식으로 취급 함을 의미합니다. egrep에서 "ERE"로 약칭 된 "확장 정규 표현식"이 활성화됩니다. (동일하다 egrep을 grep -E치료) +, ?, |, (,와 )같은 메타 캐릭터.

기본 정규 표현식 (그렙 포함), 메타 문자에서 ?, +, {, |, (, 그리고 )그들의 특별한 의미를 잃게됩니다. 당신이 그들을 탈출, 메타 문자로 이러한 문자를 치료하기 위해 grep을하려면 \?, \+, \{, \|, \(와, \).

예를 들어, grep은 플러스가 문자 그대로 취급되는 기본 정규 표현식을 사용하며, 플러스가있는 모든 라인이 리턴됩니다.

grep "+" myfile.txt

반면에 egrep은 "+"를 메타 문자로 취급하고 더하기가 "한 번 이상"으로 해석되므로 모든 행을 반환합니다.

egrep "+" myfile.txt

+egrep에 의해 메타 문자로 취급되었으므로 모든 행이 리턴 됩니다. 일반 grep은 리터럴이있는 행만 검색했을 것 +입니다.

fgrep

fgrep은 "Fixed-string Global Regular Expressions Print"의 약자입니다.

fgrep (grep -F와 동일)는 고정 또는 빠른 grep이며 grep처럼 동작하지만 정규식 메타 문자는 특수한 것으로 인식하지 않습니다. 복잡한 패턴이 아닌 단순한 문자열 만 처리하므로 검색이 더 빨리 완료됩니다.

예를 들어 리터럴 도트 (.)에 대해 .bash_profile을 검색하려면 grep을 사용하는 것이 어려울 것입니다. 점은 'wild-card, any single character'를 의미하는 메타 문자이기 때문에 점을 이스케이프해야하기 때문입니다.

grep "." myfile.txt

위의 명령은 myfile.txt의 모든 줄을 반환합니다. 대신이 작업을 수행하십시오.

fgrep "." myfile.txt

그런 다음 리터럴 '.'이있는 줄만 그들 안에 반환됩니다. fgrep는 메타 문자를 피하는 데 도움이되지 않습니다.

pgrep

pgrep은 "Process-ID Global Regular Expressions Print"의 약자입니다.

pgrep은 현재 실행중인 프로세스를 살펴보고 선택 기준과 stdout에 일치하는 프로세스 ID를 나열합니다. pgrep은 프로세스의 프로세스 id 정수만 알고 싶을 때 편리합니다. 예를 들어, mysql 프로세스의 프로세스 ID 만 알고 pgrep mysql싶다면 7312와 같은 프로세스 ID를 반환하는 명령 을 사용합니다 .


에서 pgrep수동 : 정합을 위해 사용되는 프로세스의 이름의 출력에 존재하는 15 자로 제한 은 / proc / PID / STAT . 완전한 명령 행 / proc / pid / cmdline 과 일치 시키려면 -f 옵션을 사용하십시오 .
Pablo A
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.