본문 바로가기
Unix, Linux

[Linux] grep 명령어

by 혀나Lee 2016. 10. 27.

패턴 검색 [grep]

grep 명령은 파일 내에서 지정한 패턴이나 문자열을 찾은 후에, 그 패턴을 포함하고 있는 모든 행을 표준 출력해 준다. 또한 한 디렉토리 내에서 지정한 패턴을 포함하는 파일을 출력할 수도 있다. grep 명령은 하나 이상의 파일로부터 프로그램 수정 등을 위해 변수, 또는 함수명을 찾을 때 많이 사용된다.

기본 문법

grep [-옵션] 패턴 파일명

옵션

-c: 패턴이 일치하는 행의 수를 출력
-i: 비교시 대소문자를 구별 안함
-v: 지정한 패턴과 일치하지 않는 행만 출력
-n: 행의 번호를 함께 출력
-l: 패턴이 포함된 파일의 이름을 출력
-w: 패턴이 전체 단어와 일치하는 행만 출력

예제

  • 테스트 파일 생성
ihyeon-aui-MacBook-Pro:test.local ihyeon-a$ vi test.txt
123: 동삼성
234: 삼동성
234: 삼성뮤직
123123: 일정관리
23423: 캘린더
32423: 삼성생약
234234: 삼성화장품
  • 기본 검색 ("삼성"이라는 패턴이 있는 문자열 출력)
ihyeon-aui-MacBook-Pro:test.local ihyeon-a$ grep "삼성" test.txt
123: 동삼성
234: 삼성뮤직
32423: 삼성생약
234234: 삼성화장품
  • -n 옵션 ("삼성"이라는 패턴이 있는 문자열과 행번호 출력)
ihyeon-aui-MacBook-Pro:test.local ihyeon-a$ grep -n "삼성" test.txt
1:123: 동삼성
3:234: 삼성뮤직
6:32423: 삼성생약
7:234234: 삼성화장품
  • -l 옵션 ("삼성" 이라는 패턴이 있는 파일 이름 출력)
ihyeon-aui-MacBook-Pro:test.local ihyeon-a$ grep -l "삼성" *
test.txt
  • -v 옵션 ("삼성" 이라는 패턴이 없는 행을 출력, 현재 디렉토리의 모든 파일에서 검색됨)
ihyeon-aui-MacBook-Pro:test.local ihyeon-a$ grep -v "삼성" *
publish_test.py:import pika
publish_test.py:import sys
publish_test.py:import json
publish_test.py:
publish_test.py:connection = pika.BlockingConnection(pika.ConnectionParameters(host='localhost'))
publish_test.py:channel = connection.channel()
publish_test.py:
publish_test.py:channel.queue_declare(queue='my/topic', durable=True)
publish_test.py:
publish_test.py:message = {'id': 1, 'name': 'name1'}
publish_test.py:channel.basic_publish(exchange='amq.topic',
publish_test.py:                      routing_key='',
publish_test.py:                      body=json.dumps(message),
publish_test.py:                      properties=pika.BasicProperties(
publish_test.py:                         delivery_mode = 2, # make message persistent
publish_test.py:                      ))
publish_test.py:print(" [x] Sent %r" % message)
publish_test.py:connection.close()
test.txt:234: 삼동성
test.txt:123123: 일정관리
test.txt:23423: 캘린더
  • -v 옵션 ("삼성"이라는 패턴이 없는 행을 출력, 해당 파일에서만 검색됨)
ihyeon-aui-MacBook-Pro:test.local ihyeon-a$ grep -v "삼성" test.txt
234: 삼동성
123123: 일정관리
23423: 캘린더

패턴의 정규 표현식(Regular Expression)[각주:1]

$ grep '^a' 파일명 

= ^는 파일의 시작을 나타냄. 파일에서 a로 시작하는 행을 찾는다. 

$ grep 'apple$' 파일명

= $는 파일의 끝을 나타냄. 파일에서 e로 끝나는 행을 찾는다. 

grep 'app*' 파일명 

= 파일에서 app로 시작하는 모든 단어를 찾는다. 

$ grep 'a.....e' 파일명 

= 파일에서 a로 시작하고 e로 끝나는 7자리 단어를 찾는다. 

$ grep [a-d] 파일명 

= 파일에서 a,b,c,d 로 시작하는 단어를 모두 찾는다. 

$ grep [aA]pple 파일명 

= 파일에서 apple 또는 Apple로 시작하는 단어를 모두 찾는다.

$ grep 'apple' d*

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

$ grep 'apple' 파일명1 파일명2 

= 지정된 두개의 파일에서 apple 를 포함하는 모든 행을 찾는다. 

$ grep '^[ab]' 파일명 

= 파일에서 a나 b로 시작되는 모든 행을 찾는다. 


  1. http://ra2kstar.tistory.com/100 [본문으로]

'Unix, Linux' 카테고리의 다른 글

[Mac] PORT 사용중인 프로세스 보기 및 죽이기  (0) 2016.12.13
[Ubuntu] ssh 설치 및 실행  (0) 2016.11.24
[Linux] zip 압축, 압축풀기  (0) 2016.11.03
[Linux] 명령어  (0) 2016.11.02
[Unix] cron crontab  (0) 2016.10.13

댓글