이번에는 검색을 도와주는 명령어 ‘grep’에 대해 설명해보겠습니다.
grep은 특정 파일이나 폴더를 찾고 그 내용에 포함된 문자열을 찾는데 사용됩니다. 단일로 사용할 수도있으나 |를 이용해 다른명령어와 함께도 사용되곤 합니다.
이것 또한 예를 들어서 설명하는게 가장 설명하기 쉽기때문에 간단한 사용법 및 옵션을 알아보고 예제를 들어서 설명하도록 하겠습니다.
사용법
grep [옵션] [패턴] [파일]
다른 명령어와 함께 사용될경우 cat test.txt | grep test 이런식으로 사용됩니다. 이렇게 사용될 경우 test.txt에서 test가 들어간 행을 출력해줍니다. 기본사용법으로도 똑같이 사용가능하나 저는 이러한 방식으로 주로 사용합니다.
또한, 정규식을 패턴에 지원합니다.
‘^[A-Z]’ 이런식으로 A-Z까지 범위를 지정하거나
‘[ro]er 이렇게 rer, oer만 들어간 문자열을 출력
‘[^root] ‘ root만 예외로 할수도있습니다.
이외에 대중적인 정규식을 모두 지원합니다.
이외에 POSIX 문자클래스도 지원합니다.
[:alpha:] - 알파벳 영어 // 정규식 [a-zA-Z]
[:alnum:] - 알파벳과 숫자 // 정규식 [a-zA-Z0-9]
[:digit:] - 숫자만 // 정규식 [0-9]
[:xdigit:] - 16진수 숫자 // 정규식 [0-9A-Fa-f]
[:lower:] - 영어 소문자 // 정규식 [a-z]
[:upper:] - 영어 대문자 // 정규식 [A-Z]
[:blank:] - 탭 문자 // 정규식 [\t]
[:space:] - 공백문자, 탭, 엔터, 폼피드, 캐리지리턴 등 // 정규식 [\t\n\r\vf]
옵션
옵션도 매우 많기때문에.. 대표적인 옵션들 몇개만 소개하고 나머지옵션들은 grep –help로 찾아보시면 됩니다.
-v 옵션은 제외
-x 포함이 아니라 행 전체가 일치할때
-c 일치하는 행 수
-i 대소문자 구문 X
-l 일치하는 행을 포함하는 각각 파일이름 출력
-L 일치하는 행이 없는 파일 이름 출력
-n 일치할경우 행 번호를 붙여서 출력
-h 복수파일(여러파일) 검색에서 파일명을 출력에서 숨김-E 확장 정규표현식
예제
1. 특정파일에서 특정 문자열 찾기.
grep [문자열] [파일이름]
2. 특정파일들에서 특정 문자열이 들어간 파일 찾기.(-l 사용)
grep -l [문자열] [파일1] [파일2] [파일3] …
3. 특정파일에서 특정 문자열이 몇번째줄에 있는지 찾기.
grep -n [문자열] [파일이름]
3. 특정파일에서 특정 문자열이 몇 줄 있는지 찾기.
grep -c [문자열] [파일이름]
4. 특정파일에서 정규식 사용해서 행 출력하기
grep [at]est /etc/passwd // passwd 파일에서 aest 와 test 가 들어가는 행 출력
grep test[1-5] /etc/passwd // passwd 파일에서 test 1-5번까지 들어가는 행 출력
5. 특정파일에서 완벽히 문자열과 행이 일치한 경우에만 출력(-x 옵션)
grep root /etc/passwd
grep -x root /etc/passwd
grep -x root:x:0:0:root:/root:/bin/bash /etc/passwd
6.특정파일에서 A문자열 혹은 B문자열 둘중하나 찾기(-E 옵션)
grep -E ‘abcd|ebcd’ test.txt
7.다른명령어와 함께 사용하기
netstat -lntp | grep 22 // netstat 에서 22번 포트만 찾으려고함.
8. posix를 이용해 \t 문자열이 들어간 행 출력(공백으로 안찾아질때)
grep auth[[:blank:]][[:blank:]]required /etc/pam.d/su
이외에 궁금한점은 댓글이나 문의주시면 한번 같이 해결해보도록합시다..