◎ Grep
- 파일 전체를 뒤져 정규 표현식에 대응하는 모든 행들을 출력한다.
- Syntex : grep <word> <filename>
◇ option
문자 | 의미 |
-b | 검색결과의 각 행 앞에 검색된 위치의 블록 번호 표시. 검색 내용이 디스크의 어디쯤 있는지 위치를 알아내는데 유용하다. |
-c | 검색 결과를 출력하는 대신, 찾아낸 행의 총수를 출력한다. |
-h | 파일 이름을 출력하지 않는다. |
-i | 대소문자를 구분하지 않는다. (대문자와 소문자 동일 취급) |
-l | 패턴이 존재하는 파일의 이름만 출력한다. |
-n | 파일 내에서 행 번호를 함께 출력한다. (새로 검색한 목록의 행번호가 아니라 원래 문서가 가지고 있는 파일 자체의 문서번호를 출력한다.) |
-s | 에러 메시지 외에는 출력하지 않는다. 종료 상태를 검사할 때 유용하게 사용. |
-v | 패턴이 존재하지 않는 행만 출력한다. |
-w | 패턴 표현식을 하나의 단어로 취급하여 검색한다. |
ex) /etc/passwd 파일 에서 root 라는 패턴을 찾아라
: grep root /etc/passwd
ex) ps -ef 명령어의 출력 결과에서 root를 포함하는 모든 행들이 화면에 출력되게 하라.
: ps -ef | grep root
ex) linux로 시작하는 행과 행 번호(n) 를 출력
: grep -n '^linux' /etc/passwd
( -n 옵션은 새로검색된 행의 행번호를 출력하지않고, 기존 문서의 행 번호를 출력한다)
◇ 조금더 응용하기
- DataFile
ex) .bak로 끝나는 행을 출력하라
: grep '.bak&' FILE
ex) 대문자로 시작하고 숫자로 끝나는 다섯 문자의 열이 포함된 행을 출력하라
: grep '[A-Z]...[0-9]' FILE
ex) 소문자가 적어도 아홉 개 이상 연속적으로 나오는 문자열을 포함한 모든 행을 출력하라
: grep '[a-z]\{9,\}' FILE
ex) 소문자 하나로 시작하고, 이어서 임의 개수의 여러 문자가 나오며, n으로 끝나는 단어가
포함된 모든 행을 출력하라
: grep '\<[a-z].*n\>' FILE
ex) pat가 포함된 모든 행을 출력하라. (단 pat는 대 소문자를 구분하지 않는다.)
: grep -i 'pat' FILE
ex) SE 패턴이 존재하는 파일의 파일 이름을 출력하라
: grep -l 'SE' *
ex) west가 포함된 행의 총 수를 출력하라
: grep -c 'west' FILE
ex) north 단어가 있는 모든 행을 출력하라. (north가 온전한 하나의 단어일때만 출력)
: grep -w 'north' FILE
◎ 실습
- 핸드폰(전화) 번호 패턴을 정규표현식을 통해 정의
규칙1> 지역번호 및 통신사 번호는 '0'으로 시작하는 2자리 혹은 3자리 숫자 (ex 02, 032,010)
규칙2> 중간자리 번호 패턴은 3자리 혹은 4자리가 반드시 한 번은 나와야 한다.
규칙3> 끝자리 번호 패턴은 4자리가 반드시 한 번은 나와야 한다.
- DB
◇ 답 (답은 정규표현식을 쓰는 사람의 스타일에 따라 조금씩 바뀜)
◇ 풀이
^[0][0-9]\{1,2\}
: 0으로 시작하는 두자리 혹은 세자리 숫자
^[0]
: 0으로 시작하는 행
[0-9]\{1,2\}
: 한개 혹은 두개의 숫자
-
\<
: 단어의 시작 지시자
[0-9]\{3,4\}
: 3자리 혹은 4자리의 숫자
\>
: 단어의 끝 지시자
-
\<
: 단어의 시작 지시자
[0-9]\{4\}
: 4자리의 숫자
$
: 행의 끝
'UNIX&LINUX > LINUX' 카테고리의 다른 글
리눅스 vi 단축키 (0) | 2017.10.13 |
---|---|
라이브러리 패스 잡는법 (0) | 2017.10.13 |
리눅스에서 기본적인 환경설정하기 (Path 위주로) (0) | 2017.06.08 |
리눅스 시스템 ping 명령어 사용하기 (0) | 2017.06.08 |
[Linux]리눅스,링크,아이노드,하드링크,심볼릭링크,링크명령어 (0) | 2015.08.17 |
[리눅스]리눅스의 링크란?,리눅스 링크의 종류,하드링크와 심볼링크에 대해 (0) | 2015.08.17 |
httpd.conf 설명 (0) | 2015.07.22 |
리눅스 그룹생성 과 그룹내 유저생성 (0) | 2015.07.22 |