티스토리 뷰

SYSTEM/LINUX

7) Grep&Regular-Expression

chrisysl 2018. 2. 17. 14:13

grep (Globally find Regular-Expression and Print)

 - 파일 내용 중 정규식 패턴(Regular-Expression)에 일치하는 문자열을 찾아 화면에 출력

 - 독립적으로도 유용한 기능을 제공하지만, 다른 명령어와 조합해서 사용할때 더 강력하다


#> grep [pattern] [file]

 -i : 대소문자를 구별하지 않는다(ignore-case)

 -n : 행 번호를 함께 보여준다(--line-number)

 -v : 정규식에 일치하지 않는 행만 보여준다(--revert-match)

 -r : 하위 디렉토리에 위치한 파일도 검색한다(--recursive)



grep_test.txt






# 예제파일을 practice 디렉토리에 위치시킨 후 명령어에 대해 알아보자.

#> grep "root" /etc/passwd 라고 입력시, 

해당 /etc/passwd 경로에서 검색을 하고자 하는 root 라는 문자열이 포함된 라인을 출력을 해준다.






#
-i 옵션 : 대소문자 구별하지 않고 해당 경로에 해당 문자열이 들어있는 행 출력

-n 옵션 : 좌측에 행 번호를 같이 출력해 줌. 즉, 해당 경로의 root 문자열이 들어있는 행은 첫번째 행과 11번째 행

-v 옵션 : 해당 경로에서 root 문자열이 들어 있지 않은 모든 행 출력






-r 옵션 : 해당 경로에서 하위경로를 포함하여 해당 문자열이 들어간 행을 출력.






grep 이 강력한 이유는 '정규식' 이라는것을 이용하여 원하는 정보를 찾는것이 가능하다는 점인데, 그럼 정규식에 대해 알아보도록 하자.


grep 명령어로 무언가를 찾기 전에 alias를 이용해서 색깔을 지정해주면 보기 편하다.

#> alias grep="grep --color=auto"



# alias를 이용해 색깔을 지정한 모습.






위에 업로드 한 예제파일은 윈도우에서 작성 된 파일이기 때문에 안의 내용물을 리눅스에 직접 입력하여,

리눅스 내에서 파일을 생성해 보도록 하자.



#> echo "[작성할 내용]" > [target] 와 같은 형태로 입력해준다.

따라서 예제파일을 메모장에 일차로 불러들인 후 전체 복사하여 [작성할 내용] 부분에 우클릭 ->붙혀넣기 한다.






# grep_test 라는 텍스트 파일이 생성되었고 안에 내용 또한 잘 입력 되었다.








정규식 (Regular-Expression)                        // 더 많은 정규식이 존재하지만 이정도가 기본.

^        : 행의 시작

$         : 행의 끝

.         : 하나의 문자와 대응

*         : 선행문자의 0개 혹은 임의개수와 대응

[ ]       : [ ]사이의 문자 하나와 대응

[^ ]     : [ ]사이의 문자를 제외한 문자와 대응






#

1. #grep "The" grep_test        // "The" 가 포함된 라인

2. #grep "^#" grep_test         // "#" 으로 시작하는 라인

3. #grep "t$" grep_test          // t로 끝나는 라인






#

4. #grep "s.n" grep_test         // s와n사이에 임의의 문자 하나를 포함한 라인

5. #grep "i*" grep_test           // 선행문자 i가 개수와 무관하게 포함되어 있다면 (0개 포함) 출력

cf) "ai*" 의 경우 a는 반드시 포함되어 있어야 하지만, i는 0개 혹은 그 이상일 경우 출력(0개의 경우에도 출력된다는 것에 주의)






#

6. #grep "[tT]" grep_test         // t혹은 T가 포함된 라인

7. #grep "[AB]" grep_test        // A혹은 B가 포함된 라인

8. #grep "[AB]r" grep_test       // A혹은 B이후에 r이 포함된 라인






#

9. #grep "[a-z]" grep_test        // a부터 z를 포함한 라인 즉, 모든 영어 소문자 포함한 라인

10. #grep "[a-zA-Z]" grep_test  // 영어를 포함한 라인






#

11. #grep "[^0-9]" grep_test     // 숫자를 제외한 나머지와 일치하는 라인






#

"^[^#]" // #으로 시작하지 않는 라인 검색






grep 명령어를 이용하여 찾은 결과를 색깔있는 글자로 해당 부분을 표시해주는 alias 기능은 우리가 로그아웃하면 초기화 되어

해당 설정 값을 다시 사용 할 수 없어진다. 이것을 따로 리눅스 내에서 저장시킬수도 있지만, Xshell 에서 지원하는 기능을 이용하여

설정값을 저장하는법을 알아보도록 하자.



# Xshell 좌측 상단 폴더모양 클릭 -> 등록정보






# 로그인 스크립트 -> 다음 대기 및 ... 체크 -> 추가 -> 대기 및 보내기 위와같이 입력






# 이후에 연결해보면 새로운 세션이 열리고 처음부터 grep에 대한 alias 값이 설정해둔대로 적용된 것을 확인 할 수 있다.



'SYSTEM > LINUX' 카테고리의 다른 글

9) VI  (0) 2018.02.22
8) Link  (0) 2018.02.21
6) Basic Command2  (0) 2018.02.15
5) Basic Command1  (0) 2018.02.14
4) Bash Shell  (0) 2018.02.12
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
TAG
more
«   2024/04   »
1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30
글 보관함