1. grep 명령어란? |
윈도우에서 비주얼 스튜디오라는 강력한 IDE를 사용하여 개발하던 사람들이 리눅스로 개발할 때는 공통적으로 불편해 하는 점이 있다.
바로, 해당 문자열이 어느 소스 파일에 있는 지, 확인하는 것이다.
설마, 일일히 모든 코드를 다 뒤져봐야 할까? 물론, 이것도 하나의 방법이겠다. 파일이 적다면 말이다.
그래서 이번에 리눅스의 명령어인 grep 을 정리하고자 한다. grep은 특정 문자열을 파일에서 찾아주는 명령어이다. 먼저, 다음의 예를 보자.
grep의 사용법은 다음과 같다.
grep [옵션][정규표현식(문자열)][찾기 대상이 될 파일명]
2. grep 에서 사용하는 정규표현식 메타 문자 |
메타문자 |
기능 |
사용 예 |
사용 예 설명 |
^ |
행의 시작 지시자 |
'^test' |
test로 시작하는 모든 행과 대응함. |
$ |
행의 끝 지시자 |
'test$' |
test로 끝나는 모든 행과 대응함. |
. |
하나의 문자와 대응 |
't.s.' |
총 4개의 문자로 이루어진 문자열을 검색하는 데, 첫 번째는 't' 세 번째는 's'인 문자열을 모두 대응. |
* |
선행 문자와 같은 문자 0개 또는 임의 개수와 대응 |
'test*' |
'test'를 기본으로 뒤에 아무 문자나 포함하여도 모두 대응. |
[] |
[] 사이의 문자 집합 중, 하나와 대응 |
'[Tt]est' |
'test' 나 'Test'를 대응함. |
[^ ] |
문자집합에 속하지 않는 한 문자와 대응 |
'[^A-T]est' |
A와 T 사이 범위에 포함되지 않는 한 문자와 est가 붙은 문자열만 검색한다. |
\< |
단어의 시작 지시자 |
'\ |
test로 시작하는 단어를 포함하는 행과 대응 |
\> |
단어의 끝 지시자 |
'test\>' |
test로 끝나는 단어를 포함하는 행과 대응 |
\(..\) |
다음 사용을 위해서 태그를 붙임. |
'\(tes\)ing' |
지정된 부분을 태그 1에 저장한다. 나중에 태그 값을 참고하려면 \1을 쓴다. 맨 왼쪽부터 시작하여 태그를 9개까지 쓸 수 있다. 왼쪽 예에서는 tes가 레지스터1에 저장되고, 나중에 \1로 참고할 수 있다. |
x\{m\} |
문자 x를 m번 반복한다. |
't\{5\}' |
문자 t가 5회 연속으로 나오는 모든 행을 대응함. |
x\{m,\} |
적어도 m번 반복한다. |
't\{5,\}' |
문자 t가 최소한 5회 반복되는 모든 행과 대응함. |
x\{m,n\} |
m회 이상 n회 이하 반복한다. |
t\{5,10\}' |
문자 t가 5회에서 10회 사이의 횟수로 연속으로 나오는 문자열과 대응함. |
3. grep의 옵션 |
옵션 |
동작 설명 |
-b |
검색 결과의 각 행 앞에 검색된 위치의 블록 번호를 표시한다. 검색 내용이 디스크 어느 곳에 위치했는 지를 알아내는데 유용하다. |
-c |
검색 결과를 출력하는 대신에 찾아낸 행의 총 개수를 출력한다. |
-h |
파일 이름을 출력하지 않는다. |
-i |
대소문자를 구분하지 않는다. (대소문자 같은 취급) |
-I |
대소문자를 구분한다. |
-l |
패턴이 존재하는 파일의 이름만 출력한다. |
-n |
파일 내에서 행 번호를 함께 출력한다. |
-s |
에러 메시지 외에는 출력하지 않는다. |
-v |
패턴이 존재하지 않는 행만 출력한다. |
-w | 패턴 표현식을 하나의 단어로 취급하여 검색한다. |
이상으로 정리를 마치겠습니다.
제 글이 도움이 되셨다면 공감 버튼 눌러주시면 감사하겠습니다! (광고도 한번 씩 클릭해주시면 저의 블로그 품질이 올라갑니다)
'컴퓨터 관련 > Linux || Unix' 카테고리의 다른 글
[Linux|Unix] 리눅스 커널 버전 읽는 방법 (1) | 2017.08.27 |
---|---|
[Linux|Unix] 리눅스 ctags 정리 [리눅스 필수 도구] (0) | 2017.08.24 |
[Linux|Unix] 리눅스 vi 환경 설정 방법 (0) | 2017.08.20 |
[Linux|Unix] 리눅스 tar, gz 압축 및 해제 방법 (2) | 2017.08.20 |
[Linux] make 컴파일 오류 Clock skew detected 해결 방법 (0) | 2017.08.17 |
댓글