WHEREIS

출처:http://genes1s.egloos.com/2464610


egrep 메타문자

메타

문자

기능

사용 예

설명

^

행의 시작 지시자

'^love'

 love로 시작하는 모든 행과 대응

$

행의 끝 지시자

'love$'

 love로 끝나는 모든 행과 대응

.

하나의 문자와 대응

'l..e'

 l 다음에 두 글자가 나오고 e로 끝나는 문자열을 포함하는 행과 대응

*

선행 문자와 같은 문자의 0개 이상의 개수와 대응

' *love'

 0개 이상의 공백 문자 후에 love로 끝나는 문자열을 포함한 행과 대응

[ ]

[ ]사이의 문자집합 중 하나와 대응

'[Ll]ove'

 love나 Love를 포함하는 행과 대응

[^ ]

문자집합에 속하지 않는 한 문자와 대응

'[^A-KM-Z]ove'

 A와 K 사이의 범위에 포함되지 않거나, M과 Z 사이에 포함되지 않는 한 문자와 ove가 붙어 있는 문자열과 대응

+

선행문자와 같은 문자의 1개 이상의 개수와 대응

'[a-z]+ove'

 a와 z 사이의 1개 이상의 문자와 ove가 붙어있는 문자열과 대응(ex: move, love, ...)

?

선행문자와 같은 문자의 0개 혹은 1개와 대응

'lo?ve'

 l 다음에 o가 0개 혹은 1개이고 ve가 붙어있는 문자열과 대응. love 혹은 lve.

a|b

a 혹은 b와 대응

'love|hate'

 love 혹은 hate와 대응

( )

정규표현식을 묶어준다

'lov(able|ely)''(ov)+'

lovable 혹은 lovely와 대응ov가 한 번 이상 등장하는 문자열과 대응



egrep(extended grep)은 grep 명령어의 좀더 확장된 버젼으로 패턴을 확장 정규 표현식으로 나타내어 grep보다 더 다양하게 패턴을 나타낸다.  다시 말하면, 좀 더 확장된 정규표현식을 메타 문자를 사용할 수 있다. 다만 grep에서 사용할 수 있었던 \{와 \{ 는 지원하지 않는다. 그러나 egrep에서 사용할 수 있는 메타 문자를 이용하면 훨씬 편리하게 정규표현식을 사용할 수 있다.

egrep는 동일 파일에서 여러 단어를 찾을 때 사용하면 편리하다.

egrep '문자열1¦문자열2¦문자열3' 파일이름

grep, egrep, fgrep의 차이를 간단히 요약하여 정리하면 다음과 같다.

fgrepgrepegrep
정규 표현식을 사용하지 않음정규 표현식을 사용함정규 표현식과 확장 표현식을 사용

egrep [-chilnvw] 'pattern' file_name

-ccount 옵션은 파일 이름 다음에 패턴이 들어 있는 라인의 수를 표시
-hhide 옵션은 파일이름을 출력하지 않음
-iignore옵션은 대소문자 구분하지 않고 찾음
-l매칭되는 라인이 있는 파일이름을 한번만 출력
-nline number 옵션은 출력하는 각 라인에 라인번호를 붙임
-vinverse 옵션은 패턴이 없는 라인만 출력
-wword 옵션은 패턴 자체가 완전한 단얼로 독립되었을 경우만 글자로 인식함


효율적인 검색을 위해 grep 명령어를 변형한 2개의 명령어가 제공된다.

그중 하나는 fgrep(fixed grep 또는 fast grep) 명령어로 이 명령어는 정규 표현식이 아닌 단순한 문자열만을 인수로 사용한다.
또 하나의 명령어인 egrep(extended grep) 명령어는 fgrep와는 반대로 grep보다 더 다양한 정규 표현식을 사용할 수 있다. 일반적으로 grep 명령어가 제일 사용하기 편리하다.

【예제】    % cat aa    jinpo       202.31.146.123    radio       202.31.146.122    knusun1     202.30.55.11    knu2000     202.30.55.15    % grep 11 aa    radio       202.31.146.122    knusun1     202.30.55.11

fgrep 명령은 grep와 비슷하지만, 다중 표적 탐색에 쓸 수 있으나, 패턴 탐색을 위한 정규 표현식은 허용되지 않고, grep보다 빠르다. fgrep에서 다중 표적을 줄 때는 각 표적이 분리된 라인으로 하여야 되고, 다중 표적 설정 시 인용부호로 묶어야 한다.

【예제】    # fgrep "jinpo    > knusun1" aa    jinpo       202.31.146.123    knusun1     202.30.55.11

egrep는 grep 명령 패밀리 중 가장 강력하다. fgrep처럼 다중 표적 탐색을 할 수 있고, 표적 설정에 정규 표현식을 쓸 수 있으며, 보다 완전하고 강력한 정규 표현식을 제공한다. egrep 명령은 문자 반복에 +, 0이나 ?을 사용할 수 있고, egrep는 다중 표적을 fgrep처럼 분리된 라인에 넣거나, 수직 바나 파이프 기호(¦)로 구분한다. 파이프 기호와 표적사이에는 빈칸이 없어야 한다.

【예제】    # egrep "jinpo    > radio" aa    jinpo       202.31.146.123    radio       202.31.146.122    # egrep "jinpo¦radio" aa    jinpo       202.31.146.123    radio       202.31.146.122    #
egrep 명령은 두 세가지 문자열을 동시에 찾아야 할때는 egrep을 쓰면 아주 편하다.
예를 들어, 문자열1, 문자역2를 찾는 경우
• grep 문자열1 파일이름; grep 문자열2 파일이름 와 같이 해야하는것을 
• egrep '문자열1¦문자열2' 파일이름 와 같이 간단해진다.

명령어 구분명령어실행결과
grepgrep sys /etc/passwd; grep adm /etc/passwdsys:x:3:3::/:
adm:x:4:4:Admin:/var/adm:
egrepegrep 'sys¦adm' /etc/passwdsys:x:3:3::/:
adm:x:4:4:Admin:/var/adm:

【예제】

$ grep 'Network' /etc/passwdlisten:x:37:4:Network Admin:/usr/net/nls:$ grep 'uucp' /etc/passwduucp:x:5:5:uucp Admin:/usr/lib/uucp:nuucp:x:9:9:uucp Admin:/var/spool/uucppublic:/usr/lib/uucp/uucico$ egrep '(Network¦uucp)' /etc/passwduucp:x:5:5:uucp Admin:/usr/lib/uucp:nuucp:x:9:9:uucp Admin:/var/spool/uucppublic:/usr/lib/uucp/uucicolisten:x:37:4:Network Admin:/usr/net/nls:$

grep정규 표현식을 사용하여 파일에서 문자열을 찾음
egrep정규 표현식과 확장 정규 표현식을 사용하여 파일에서 여러 개의 문자열을 찾을때 편리
fgrep정규 표현식을 사용하지 않기 때문에 메타문자 따위도 파일에서 찾을 수 있음
pgrep지정한 프로세스를 찾음 (cf: ps -A)


'OS - Linux > Linux - ETC' 카테고리의 다른 글

SUDO 명령어 사용 시 참고  (0) 2014.02.26
rabbitmq plugins enable  (0) 2014.02.13
/var/log/message에 찍히는 rsync 로그 제외하기  (3) 2014.01.28
crontab 관련  (0) 2014.01.27
CRONTAB error(user uid 변경 후 유의)  (0) 2014.01.27

이 글을 공유합시다

facebook twitter kakaoTalk kakaostory naver band
loading