본문 바로가기
I T/Linux

리눅스 grep 명령어 활용

by 루솨 2015. 8. 21.



grep  ( Globally find Regular-Expression and Print )


grep  명령어는 기본 정규식 으로 파일내의  특정 문자를 검색 편집  필터 해서 볼수 있습니다.


사용법: grep [옵션]... 패턴 [파일]...


egrep 은 grep 의 확장된 명령어 이며 파일내의 특정 문자를 확장된 정규표현식으로 검색할수 있습니다.

egrep  =  grep -E  의 명령어와 같습니다.

fgrep  =  파일내의 특정문자를 고정된 문자열로만 인식하여 검색합니다.

zgrep  = 압축된 파일내에서 특정 문자나 단어를 검색합니다.   

모든 명령어의 옵션 형식은 grep 과 동일 합니다.


정규식 선택과 해석

  -E, --extended-regexp     확장된 정규 표현식으로 된 패턴 (ERE)

  -F, --fixed-strings       개행 문자로 구분된 고정 길이 문자열로 된 패턴

  -G, --basic-regexp        기본 정규 표현식으로 된 패턴 (BRE)

  -P, --perl-regexp         펄 정규 표현식으로 된 패턴

  -e, --regexp=PATTERN      패턴을 이용해서 찾기

  -f, --file=FILE           파일에서 패턴을 가져옴

  -i, --ignore-case         대소문자 구분 안 함

  -w, --word-regexp         전체 단어에 대해서만 패턴 비교

  -x, --line-regexp         전체 라인에 대해서만 패턴 비교

  -z, --null-data           새 줄이 아닌 0 바이트인 줄 끝 데이터

  -v  검색어 패턴과 일치하지 않는 것을 찾음 

  -n  line number 출력

  -r  하위 디렉토리 까지 검색

  -c  패턴과 일치하는 라인 수를 출력


grep 에서 사용 되는 검색문자 패턴 정규식표현

. : 문자 아무거나를 의미함  한개의 문자 ( ?와 동일 )

*: 어떠한 문자열이나 문자길이에 무관한 문자열을 의미함

^: 행의 시작 문자를 의미

$: 행의 마지막 문자를 의미

[]: 한문자 길이의 패턴리스트

[^ ] : 지정된 문자들 이외의 문자들을 의미

\ : 뒤에 오는 문자를 문자 그대로 인식 ( 특수 문자를 표현할때   예로  /bin/bash  라 할때  \/bin\/bash 라 해야됨. )

/< : 단어의 시작 위치를 의미

/> : 단어의 마지막 위치를 의미


예로 이런 텍스트 문서가 있다고 치면

IU     15,500 22 42 31 55

Sosi   16,000 34 49 12 47

missA  14,000 24 33 41 34

Apink  14,500 26 36 49 41

Aoa    15,000 32 35 29 52


## 특정문자를 포함한 행의 갯수를 출력.

hoon-pc test # grep -c "A" testfile1              <===   testfile1 에서 A 라는 문자가 들어간 행의 숫자를 표현하라는 의미

그럼 행의 숫자가 3 이 나옵니다.

## 특정문자를 포함하지 않는 행을 출력.

hoon-pc test # grep -v "A" testfile1
IU     15,500 22 42 31 55
Sosi   16,000 34 49 12 47

위 명령어를 통하여 A라는 문자를 포함한 행은 출력을 제외 하고 있습니다.

대소문자를 구분 않하겠금 할려면  i 옵션을.  



###  ls -l  명령어나  ll 이라는 명령어를 통하여  디렉토리만 확인 할려고 할땐   

hoon-pc test # ls -l                               

-rw-r--r--  1 hoon hoon   199757  7월 17 17:05 1.jpeg

-rw-------  1 hoon hoon  2152247  7월 25  2014 20140725_213455.jpg

-rw-------  1 hoon hoon  2270616  7월 25  2014 20140725_213511.jpg

-rw-------  1 hoon hoon 21507413  6월 30 10:31 2015-KRnet-NFV_SDN.zip

drwx------  3 hoon hoon     4096  7월 30  2014 IP SCAN

drwx------  7 hoon hoon     4096  7월 30  2014 ISMS

drwx------  2 hoon hoon     4096  7월 30  2014 html_backup

drwxr-xr-x  2 hoon hoon     4096  6월  4 10:38 intel dpdk

-rw-------  1 hoon hoon   570064  5월 12 16:23 mpls.odp

drwxr-xr-x  5 hoon hoon     4096  6월 16 14:58 onie



hoon-pc test # ls -l |grep ^d   

drwx------  3 hoon hoon     4096  7월 30  2014 IP SCAN

drwx------  7 hoon hoon     4096  7월 30  2014 ISMS

drwx------  2 hoon hoon     4096  7월 30  2014 html_backup

drwxr-xr-x  2 hoon hoon     4096  6월  4 10:38 intel dpdk

drwxr-xr-x  5 hoon hoon     4096  6월 16 14:58 onie


이런식으로 응용 가능합니다  이와 반대로 디렉토리를 제외한 파일들의 리스트를 보고싶은 경우에는 

-v 옵션을 사용 해주시면 됩니다.


hoon-pc test # ls -l |grep -v ^d

-rw-r--r--  1 hoon hoon   199757  7월 17 17:05 1.jpeg

-rw-------  1 hoon hoon  2152247  7월 25  2014 20140725_213455.jpg

-rw-------  1 hoon hoon  2270616  7월 25  2014 20140725_213511.jpg

-rw-------  1 hoon hoon 21507413  6월 30 10:31 2015-KRnet-NFV_SDN.zip

-rw-------  1 hoon hoon   570064  5월 12 16:23 mpls.odp