linux grep이란?
특정 파일에서 지정한 문자열을 찾아, 문자열이 찾아진 해당 라인을 출력해주는 도구입니다.
예를 들어 아래와 같은 text.txt 파일이 있다고 칩시다.
1 | fghi |
아래 명령어로 grep 을 사용한다면
1 | grep j text.txt |
결과는 아래와 같이 text.txt파일에서 j 가 포함된 줄을 출력해줍니다.
1 | jkl |
grep 사용법
grep 사용법은 아래와 같습니다.
1 | 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은 정규식을 이용해서 검색이 가능합니다.
대표적으로 몇가지 유용한 정규식 사용방법에 대한 예는 아래와 같습니다.
1 | # .: 임의의 한 글자 |
grep -rl “text”
1 |
|
./themes/LICENSE.md
./themes/README.md
./themes/static/css/style.css
./themes/static/txt/text.txt
1 |
|
grep -rl “keyword” . –exclude-dir=.svn
## 총평
편리하게 사용할 수 있어서 좋습니다.
grep -r "text" 와 같이 -r 옵션을 개인적으로 자주 사용합니다.
grep -r "text" > text.txt와 같이 파이프 (|) 를 쓰면 출력내용을 파일로 기록하여,
더욱 유용하게 사용할 수 있습니다.
windows에서는 find "찾을문자" "경로" 가 동일한 tool 입니다.