패턴 검색 [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로 시작되는 모든 행을 찾는다.
- 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 |
댓글