grep 명령어
grep 명령은 파일에서 특정한 패턴(문자열)을 찾는 명령이다. 이는 해당 문자열이 들어 있는 파일을 찾아 그 문자열이 들어가 있는 라인(행)을 화면에 출력한다.
물론, 한 디렉토리 내에서 지정한 패턴을 포함하는 파일을 출력할 수도 있다.
grep 명령은 하나 이상의 파일로부터 프로그램 수정 등을 위해 변수, 또는 함수명을 찾을때 많이 사용된다.
grep [옵션] [정규표현식(문자열)] [찾는대상이되는 파일명]
↑data.txt 안에 수 많은 문자열이 있다.
# 이중에 내가 원하는 문자열이 millionth라면 이 문자열을 찾고자 하나하나 찾아 볼 수 없다.
↑grep 명령을 이용해서 원하는 문자열을 찾아 그 행을 출력 할 수 있다.
# " " (더블쿼터) 는 문자열로 인식하게 하는 중요한 기능
# 특수문자를 문자열 그대로 인식해서 찾고 싶다면 " "를 꼭 써야한다.
grep 패턴 *
- 패턴 지정에서 사용되는 정규 표현식은 작은 따옴표 (' ')로 묶어서 표현한다.
↑원하는 패턴과 매칭되는 문자열을 출력할 수 있다.
옵션
- c (count) : 파일의 내용 대신 문자열이 들어있는 라인의 수를 출력
- n (line number) : 문자열이 들어있는 라인과 라인번호를 출력
- i (ignore) : 문자열의 대소문자를 구분하지 않는다.
- L (files with matches) : 문자열을 포함하는 파일의 이름만 출력
- r (recursive) : 서브 디렉토리의 파일까지 모두 출력
- v (invert match) : 문자열이 제외된, 문자열이 포함되어 있지 않은 라인을 출력
- e PATTERN : pattern에 찾을 문자열명시
- w (word regexp) : 전체 단어와 일치하는 줄만 출력, 단어의 일부 로써 일치하는 경우가 아닌 하나의 단어로써 일치하는 줄 출력
패턴 정규 표현식
- 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로 시작되는 모든 행을 찾는다.
egrep
- egrep은 grep의 확장판으로 grep가 하나의 문자열을 찾는 것 과는 달리, 여러개의 문자열을 동시에 찾을 수 있고 , grep에서 활용할 수 있는 메타 문자 이외에 정규 표현식 메타문자가 추가되었다.
egrep에서 사용하는 정규표현식 메타문자
+ : + 앞의 정규표현식이 1회 이상 나타남
? : ? 앞의 정규표현식이 0 또는 1회 나타남
| : 문자열간의 OR연산자
() : 정규 표현식을 둘러 쌈
ex
▶ egrep 'NW|EA' datafile : (NW나 EA가 포함된 행을 출력한다. NW와 EA사이에 파이프( | ))
▶ egrep '3+' datafile : (숫자 3이 한 번 이상 등장하는 행을 출력한다.)
▶ egrep '2.?[0-9]' datafile : (숫자 2 다음에 마침표가 없거나 한 번 나오고, 다시 숫자가 오는 행을 출력한다.)
▶ egrep ' (no)+' datafile : (패턴 no가 한 번 이상 연속해서 나오는 행을 출력한다.)
▶ egrep 'S(h|u)' datafile : (문자 S 다음에 h나 u가 나오는 행을 출력한다.)
▶ egrep 'Sh|u' datafile : (패턴 Sh나 u를 포함한 행을 출력한다.)
[ Linux - CentOS ] 명령어 sort (feat.uniq 명령어) (0) | 2017.07.14 |
---|---|
[ Linux - CentOS ] 명령어 xxd (0) | 2017.07.14 |
[ Linux - CentOS ] SetUID(2) (0) | 2017.07.14 |
[ Linux - CentOS ] SetUID,SetGID (1) (0) | 2017.07.14 |
[ Linux - CentOS ] du 명령어 (0) | 2017.07.14 |
좀 알려주세요 현기증 난단 말이에요..