바로가기 메뉴
본문내용 바로가기
메인메뉴 바로가기



Customer Center

Notice · Security Issue · Account Guide · Global Traffic Test

HOME > Customer Center > Security Issue

보안이슈

grep
2016.02.19

*grep(GREP : Global Regular __EXPRESSION__ Print)

grep : 파일 전체를 뒤져 정규표현식에 대응하는 모든 행들을 출력한다.

egrep : grep의 확장판으로, 추가 정규표현식 메타문자들을 지원한다.

fgrep : fixed grep 이나 fast grep으로 불리며, 모든 문자를 문자 그래도 취급한다. 즉, 정규표현식의 메타문자도 일반 문자로 취급한다.

[grep의 동작 방법]

grep에서 사용하는 정규표현식 메타문자

메타문자

기 능

사용 예

사용 예 설명

^

행의 시작 지시자

"^love"

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

$

행의 끝 지시자

"love$"

love로 끝나는 모든 행과 대응

.

하나의 문자와 대응

"l..e"

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

*

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

" *love"

0개 혹은 임의 개수의 공백 문자 후에 love로 끝나는 문자열을 포함한 행과 대응

[]

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

"[Ll]ove"

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

[^ ]

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

"[^A-K]love"

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

<

단어의 시작 지시자

"

love로 시작하는 단어를 포함하는 행과 대응(vi,grep에서 지원)

>

단어의 끝 지시자

"love>"

love로 끝나는 단어를 포함하는 행과 대응

(vi,grep에서 지원)

(..)

다음 사용을 위해 태그를 붙인다.

"(lov)ing"

지정된 부분을 태크1에 저장한다. 나중에 태그값을 참고하려면 1을 쓴다. 맨 왼쪽부터 시작해 태그를 9개가지 쓸 수 있다. 왼쪽 예에서는 lov가 레지스터1에 저장되고 나중에 1로 참고할 수 있다.

x{m}

문자 x를 m번 반복한다.

"o{5}"

문자 o가 5회 연속적으로 나오는 모든 행과 대응

x{m,}

적어도 m번 반복한다.

"o{5,}"

문자 o가 최소한 5회 반복되는 모든 행과 대응

x{m,n}

m회 이상 n회 이하 반복한다.

o{5,10}"

문자 o가 5회에서 10회 사이의 횟수로 연속적으로 나타나는 문자열과 대응

[grep의 옵션]

옵션

동작 설명

-b

검색 결과의 각 행 앞에 검색된 위치의 블록 번호를 표시한다. 검색 내용이 디스크의 어디쯤 있는지 위치를 알아내는데 유용하다.

-c

검색 결과를 출력하는 대신, 찾아낸 행의 총수를 출력한다.

-h

파일 이름을 출력하지 않는다.

-i

대소문자를 구분 하지 않는다.(대문자와 소문자를 동일하게 취급).

-l

패턴이 존재하는 파일의 이름만 출력한다.(개행문자로 구분)

-n

파일 내에서 행 번호를 함께 출력한다.

-s

에러 메시지 외에는 출력하지 않는다. 종료상태를 검사할 때 유용하게 쓸 수 있다.

-v

패턴이 존재하지 않는 행만 출력한다.

-w

패턴 표현식을 하나의 단어로 취급하여 검색한다.

실습1.

# grep "^[a-z]" *

모든 파일에 대해서 첫 글자가 a에서 z사이의 알파벳인 행을 출력

# grep "hello" *
"hello"를 포함한 모든 행을 출력한다.

# grep -v "hello" *
"hello"를 포함하지 않은 행을 출력한다.

# grep -E "^[0-9]{3}-[0-9]{3}-[0-9]{4}" *
전화번호를 포함한 행을 출력한다. 포맷 : 000-0000-0000

# grep -E "(failure)+" *
failure가 1번 이상 연속한 행을 출력한다.

# grep -E "? (yes|no)" *

?다음에 yes나 no가 오는 행을 출력한다.

# kill -9 `ps aux | grep 검색어 | grep -v grep | awk ‘{print $2}’`

grep으로 찾은 프로세스 kill하기

# grep -r usb *

usb라는 pattern 모든 종류의 파일에 대해서 하위 디렉토리 모두를 검색

# ls -al | grep u-boot

: ls형식으로 u-boot가 있는 파일들을 찾아라.

실습2. 정규표현식을 이용한 grep

# grep NW datafile

# grep NW d*

(d로 시작하는 모든 파일에서 NW를 포함하는 모든 행을 찾는다.)

# grep "^n" datafile

(n으로 시작하는 모든 행을 출력한다.)

# grep "4$" datafile

(4로 끝나는 모든 행을 출력한다.)

# grep TB Savage datafile

(TB만 인자이고 Savage와 datafile은 파일 이름이다.)

# grep "TB Savage" datafile

(TB Savage를 포함하는 모든 행을 출력한다.)

# grep "5." datafile

(숫자 5, 마침표, 임의의 한 문자가 순서대로 나타나는 문자열이 포함된 행을 출력한다.)

# grep ".5" datafile

(.5가 나오는 모든 행을 출력한다.)

# grep "^[we]" datafile

(w나 e로 시작하는 모든 행을 출력한다.)

# grep "[^0-9]" datafile

(숫자가 아닌 문자를 하나라도 포함하는 모든 행을 출력한다.)

# grep "[A-Z][A-Z] [A-Z]" datafile

(대문자 2개와 공백 1개, 그리고 대문자 하나가 연이어 나오는 문자열이 포함된 행을 출력한다.)

# grep "ss* " datafile

(s가 한 번 나오고, 다시 s가 0번 또는 여러번 나온 후에 공백이 연이어 등장하는 문자열을 포함한 모든 행을 출력한다.)

# grep "[a-z]{9}" datafile

(소문자가 9번 이상 반복되는 문자열을 포함하는 모든 행을 출�

*참조한 사이트

http://neotrinity.egloos.com/961862

http://www.leopit.com/Leophp/board/lecture_board/view.php?id=61&board_mode=linux

http://www.joinc.co.kr/modules/moniwiki/wiki.php/man/1/grep

http://www.likejazz.com/technotes/kill_a_process_from_a_grep

http://sulac.egloos.com/5568244

*grep응용

http://blog.naver.com/PostView.nhn?blogId=hgh73&logNo=90128162771

이호스트데이터센터(http://www.ehostidc.co.kr)
첨부파일