Linux

Linux grep 명령어

5_jinseok12 2018. 1. 17. 15:49
728x90

grep : 파일 내용 중 정규식 패턴에 일치하는 문자열을찾아 화면에 출력한다

 

정규식
^ : 행의 시작
$ : 행의 끝
. : 하나의 문자와 대응
* : 선행문자의 0개 혹은 임의개수와 대응
[]: []사이의 문자 하나와 대응
[^]:[]사이의 문자를제외한 문자와 대응
\< : 단어의 시작
\> : 단어의 끝
A{N\} : 문자 A를 N번 반복
A\{N,\} : 문자A가 적어도 N번 반복
A\{N,n\} : 문자 A가 N번 이상 n이하 반복

 

 

 

#grep [pattern] [file]

 

 

 

"abc"를 abc에 넣는다

"abcc"를  abc1에 넣는다

"abccc"를 abc2에 넣는다

#cat 을 통해 제대로 들어갔는지 확인해본다.

 

grep 명령어의 두번째 인자는 패턴(검색할 문자열)이다.

정확히는 정규식 패턴이 오는 부분으로 패턴과 두 번째 인자인 파일인자를 구분지어 주지 않으면 shell은 정규식에서

사용하는 특수문자(*)을 shell 메타문자(*)로 확장해석한다

 

쉘 메타문자 * : 모든 문자와 일치하는 와일드 카드 문자

정규식 메타문자 * : 선행 문자가 0회, 이상 반복

 

#grep abc* abc* 를 입력하게 되면 shell은 #grep abc abc1 abc2 abc abc1 abc2 이라고 해석한다.

#grep "abc*" abc* 을 입력해야 shell이 #grep abc* abc abc1 abc2로 해석할 수 있다.

 

 

 

#grep "it*" grep_test    :   i는 무조건 있어야 하지만 t는 있어도 되고 없어도 된다.

위에 값을 보면 i가 빨간색으로 다 나타나지만 t는 있는것도 있고 없는것도 있는것을 확인할 수 있다.

 

 

#grep "[a-zA-Z]" grep_test : 영어를 포함한 라인 전부.

 

 

 

위의 메모장에 적혀있는 것을 복사해서 HostOS에 붙여넣는다.

 

#grep "[^0-9]" grep_test   : 숫자 0에서 9를 제외한 나머지와 일치. 숫자만 빼고

 

F로 시작하고 총 글자가 6개인 단어

 

ing로 끝나는 단어 출력

 

d가 두번 반복하는 라인

 

p가 적어도 한번이당 나오는 라인

 

e가 한번 또는 두번 반복되는 라인

#grep "d\{2\}" grep_test : d가 두번 반복되는 라인

#grep "p\{1,2\}" grep_test : p가 적어도 한번이상 반복되는 라인

#grep "e\{1,2\}" grep_test : e가 한번 또는 두번 반복되는 라인

 

 

문제

#으로 시작하는 라인은 제외하고 출력해라

 

#grep "^[^#]" grep_test

 

 

 

같은것이라는것을 직접 확인할 수 있다.

 

 

이렇게 세션을 하나 더 만들고 오른쪽에서 실행한 것을 왼쪽에서 직접 실시간으로 확인할 수 있도록 작업해본다.

 

 

 

#mkdir -p /practice/link_test로  link_test를 만든다.

#cd /practice/link_test로        ink_test로 이동.

resolv.conf를 현재경로에 FILE-A에 복사

cat FILE-A 를통해 FILE-A를 확인.

 

ln -s FILE-A FILE-LINK 를 입력하므로써 FILE-LINK가 FILE-A를 가르키도록 한다.

그리고 #cat FILE-LINK 를 통해 FILE-LINK 에도 FILE과 같은 내용이 들어간 것을 확인할 수 있다.

 

 

위에도 같은 방식으로 link-A가 link_test를 가르키도록 설정해보자

그리고 #mv /practice/link_test/ /home 을 통해 link_test를 home 으로 이동시킨다

 

그랬더니 밑에처럼 빨간색 글자와 칸이 뜨게 된다. 즉 잘못된 경로라는 의미이다

원래 저장되어있던 link_test를 home으로 옮겨버렸으니 경로가 틀려져서 당연히 에러가 뜨는 것이다.

 

 

 

#mv /home/link_test/ /practice/로 원래 있던 경로로 다시 이동시키면 정상적으로 작동하는 것을 알 수 있다

 

반응형

'Linux' 카테고리의 다른 글

Linux vi 모드  (0) 2018.01.24
Linux 리다이렉션 & 파이프  (0) 2018.01.24
Linux 기본 명령어  (0) 2018.01.16
Linux Xshell의 기능  (1) 2018.01.15
Linux 기본 명령어  (0) 2018.01.14