본문 바로가기

운영체제/리눅스

[리눅스]grep 명령어(특정 문자열 찾기)

리눅스 특정 문자열 찾기 명령어 - grep명령어

리눅스에서 명령어 출력결과나 파일의 특정 문자열이 포함된 열을 봐야하는 경우가 있다.

이때 사용하는 명령어가 grep명령어이다.


more명령어는 파일이나 명령어의 출력결과 중 특정 문자열이 포함된 열을 보여준다.



주로 다른 명령어의 결과를 파이프라인을 이용하여 grep으로 특정 문자열을 출력해 내는데 자주 사용한다.



grep [option] pattern filename1, filename2, ...


파일명 대신 *를 사용하면 현재 디렉터리 내 모든 파일에 대해서 점검한다.


주요옵션

리눅스 버전에 따라 옵션이 차이가 있을 수 있음


 옵션

설명

-c

 패턴과 일치하는 줄의 개수를 출력한다.

-i

 대소문자를 구분하지 않고 검색한다.

-n

 줄 번호를 함께 출력한다.

-v

 패턴과 일치하지 않는 줄을 출력한다.

-w

 패턴과 단어 전체가 일치하는 라인만 출력한다.

-x

 패턴과 라인 전체가 일치하는 라인만 출력한다.

-l

 패턴이 일치하는 줄이 있는 파일의 이름을 출력한다.

-r

 하위 디렉터리까지 포함하여 검색한다.




사용예시 및 사용화면

사용 샘플파일로 

b.txt, c.txt 2개의 파일을 만들었다.

파일의 내용은 아래와 같다.

b.txt

b1

b2 2 2

b3

...

b14

b15.


c.txt

c1

c2

c3

c4

c5



▼ grep b1 b.txt(b.txt파일에서 b1이라는 문자열이 포함된 라인을 출력)

b.txt파일에서 b1이 포함된 줄을 모두 출력해준다.


▼ grep b1 *(현재 디렉터리 내 b1이 포함된 라인을 출력)

현재 경로 내에서 b1이 포함된 라인을 파일명과 함께 출력해준다.


▼ grep -c b1 b.txt(b.txt파일에서 b1이 포함된 라인의 개수를 출력)

b1이 포함된 라인은 b1, b10, b11, b12, b13, b14, b15.로 총7개이므로 7이 출력되었다.



▼ grep -n b1 b.txt(줄번호와 함께 출력)

줄 번호가 함께 출력되고 있다.



▼ grep -v b1 b.txt(b1을 제외한 라인을 출력)

b1을 제외한 라인들이 출력되고 있다.



▼ grep -w b1 b.txt(b1이 단어전체로 포함되는 라인이 있는 라인을 출력)

b1이 단어전체로 포함되는 라인만 출력되었다.

위의 경우와는 다르게 b11, b12 등 b1이 단어에 일부 포함되는 라인들이 제외되었다.



▼ grep -x b2 b.txt, grep -x "b2 2 2" b.txt

-x옵션을 주었을 때는 b2가 포함되었지만 전체 라인과 일치하지 않아 출력되지 않았다.

전체 라인 글인 "b2 2 2"를 입력해 주었을때는 출력이 되었다.(뛰어쓰기 때문에 파일로 인식되기 때문에 ""으로 패턴을 묶어주었다.)


▼ grep -l c b.txt c.txt

c가 포함된 라인이 있는 파일명을 찾아주었다.