반응형
linux grep이란?
특정 파일에서 지정한 문자열을 찾아, 문자열이 찾아진 해당 라인을 출력해주는 도구입니다.
예를 들어 아래와 같은 text.txt 파일이 있다고 칩시다.
fghi
abfc
jkl
def
아래 명령어로 grep 을 사용한다면
grep j text.txt
결과는 아래와 같이 text.txt파일에서 j 가 포함된 줄을 출력해줍니다.
jkl
grep 사용법
grep 사용법은 아래와 같습니다.
grep [옵션] [패턴] [파일명]
grep 옵션
옵션 | 설명 |
---|---|
-E | 확장된 정규식을 사용하여 문자열을 찾습니다. |
-F | 정규식이 아닌 문자열을 사용하여 문자열을 찾습니다. |
-c | 일치하는 행의 수를 출력합니다. |
-e [pattern_list] | 입력을 검색하는 동안 사용할 하나 이상의 패턴을 지정합니다. pattern_list의 패턴은 newline 문자로 구분되어야 합니다. |
-f | 패턴이 있는 파일에서 검색 |
-i | 대소문자를 구분하지 않고 문자열을 찾습니다. |
-l | 찾으려는 문자열이 포함된 파일명만 출력합니다. |
-n | 찾으려는 문자열이 포함된 행의 번호를 같이 출력합니다. |
-s | 에러메시지 출력 안되게 함. |
-v | invert-match : non-matching lines |
-x | 행의 모든 문자를 사용하여 전체 고정 문자열 또는 정규식을 일치시키는 입력선만 일치하는 라인을 검색합니다. |
-r | 하위 폴더가 있으면, 하위 폴더까지도 Recursive(재귀)로 검색합니다. |
정규식 검색
grep은 정규식을 이용해서 검색이 가능합니다.
대표적으로 몇가지 유용한 정규식 사용방법에 대한 예는 아래와 같습니다.
# .: 임의의 한 글자
# text.txt 파일에서 a와 b 사이에 임의의 한 글자가 있는 패턴 검색
grep "a.b" text.txt
# *: 0개 이상의 문자가 포함된 패턴
# text.txt 파일에서 a 다음에 b가 0개 이상(즉, a 다음에 b가 없는 경우 포함)
grep "ab*" text.txt
# ^: ~로 시작하는 패턴
# text.txt 파일에서 abc로 시작하는 패턴 검색
grep "^abc" text.txt
# $: ~를 끝으로 하는 패턴
# text.txt 파일에서 abc로 끝나는 패턴 검색
grep "abc$" text.txt
# []: 문자열 집합 또는 범위
# text.txt 파일에서 a 또는 b 또는 x가 포함된 행 검색
grep "[abx]" text.txt
# text.txt 파일에서 수자가 포함된 패턴 검색
grep "[0-9]" text.txt
# \: escape 문자 바로 다음 문자에 대해 특수문자 해석을 비활성화
# text.txt 파일에서 abc$로 끝나는 패턴 검색
grep "abc\$$" text.txt
## 하위 디렉토리 검색
하위 디렉토리에 있는 파일도 검색하고 싶으면 -r 옵션을 사용하면 됩니다.
만일 아래와 같은 명령어를 친다면,
grep -rl "text"
출력 결과는 아래와 같습니다. (-l 옵션은 파일명출력)
./themes/LICENSE.md
./themes/README.md
./themes/static/css/style.css
./themes/static/txt/text.txt
## 검색에서 특정 폴더 제외 (--exclude-dir)
grep 은 보통 소스 전체에서 검색할때 사용하는데,
.svn이나 .git같은 폴더는 검색할 필요가 없을떄가 많습니다.
그럴 때, 아래와 같이 --exclude-dir 옵션을 사용하면 됩니다.
grep -rl "keyword" . --exclude-dir=.svn
```
총평
편리하게 사용할 수 있어서 좋습니다.
grep -r "text" 와 같이 -r 옵션을 개인적으로 자주 사용합니다.
grep -r "text" > text.txt와 같이 파이프 (|) 를 쓰면 출력내용을 파일로 기록하여,
더욱 유용하게 사용할 수 있습니다.
windows에서는 find "찾을문자" "경로" 가 동일한 tool 입니다.
#grep, #linux, #unix, #option, #regex, #리눅스, #정규식
728x90
반응형
'개발팁' 카테고리의 다른 글
주요 DB별 문자열자르기 (0) | 2024.09.18 |
---|---|
CORS란, CORS 해결방법, access-control-allow-origin, CORS/sop 이유 (7) | 2024.09.06 |
windows에서 php composer 설치하기, OpenSSL Error messages 에러, error:0A000086:SSL (0) | 2024.07.30 |
linux crontab 사용법, linux scheduler, crontab이란?, crontab 확인방법, centos crontab, crontab 매개변수, crontab설정 (0) | 2024.07.29 |
SQL(query) DB, column 명이 예약어와 겹칠경우 해결방법 (0) | 2024.07.26 |
댓글