리눅스 OS 관련 포스팅 목록
2020/07/10 - [Linux/OS] - 리눅스 우분투 특정 파일 검색(Ubuntu, Find)
2020/07/09 - [Linux/OS] - Linux tar 압축 풀기(Ubuntu, tar.gz)
2020/06/30 - [Linux/OS] - Linux Ubuntu 권한 설정(chmod)
2020/06/19 - [Linux/OS] - Linux Ubuntu NC 사용법 - 1
2020/04/28 - [Linux/OS] - Linux Ubuntu 게이트웨이 주소 설정
2020/04/26 - [Linux/OS] - Linux Ubuntu 아이피 설정하기
목차
grep 명령어
안녕하세요. 오늘은 리눅스 환경에서 파일들 안에 있는 특정 내용을 검색하는 방법에 대하여 알아보겠습니다.
이전 포스팅에서 특정 파일 검색하는 Find 명령어에 대하여 알아봤었습니다.
Find는 파일명이나 파일 크기, 파일 유형 등의 패턴으로 파일을 찾아내는 반면에 Grep 명령어는 파일 안에 있는
내용을 검색합니다. 두 명령어가 비슷한듯 보이지만 완전 다른 명령어라는 것을 알 수 있습니다.
만약 Find에 대해 알고 싶으시면 아래 링크를 통해 확인해보시기 바랍니다.
2020/07/10 - [Linux/OS] - 리눅스 우분투 특정 파일 검색(Ubuntu, Find)
grep 명령어는 자체적으로도 사용할 수 있습니다. 자체적으로 사용한다는 의미는 리눅스 운영체제 환경의 "/bin/" 경로에
grep 바이너리가 존재하기 때문에 단일로 사용할 수 있다는 의미입니다.
또한, '|' 파이프 를 통해 특정 입력값을 grep에 전달하여 해당 입력에서 어떤 단어나 내용이 포함되어있는지 확인이 가능합니다.
그래서 리눅스 우분투와 관계된 예제들을 확인해보면 "ls -al | grep test" 와 같이 '|' 파이프를 쓰고 있는 예제가 많습니다.
앞서 Find에서 리눅스나 윈도우 같은 운영체제는 디렉토리 구조가 트리 구조로 되어있다고 했습니다.
상위 디렉토리에 하위 디렉토리가 존재하고 또 그 아래에 파일들이 존재합니다.
이렇게 위에서 아래로 흐르는 구조를 트리 구조라 합니다. 마치 가지가 뻗어 나가듯이 구조가 이루어지는 것이죠.
grep 도 마찬가지로 이런 트리 구조의 파일들을 검색합니다. 또한 검색을 위해선 지금 명령어를 실행하는 사용자에게 파일의 권한이 존재해야합니다.
읽기 권한이 부여가된 파일들만 검색이 가능합니다.
자 그러면 grep 명령어 사용법에 대하여 알아보겠습니다.
grep 사용법
grep 의 기본 명령 구조는 다음과 같습니다. grep [<옵션>]... <패턴> [<파일>]...
대표적인 옵션으로 -i, -r가 있으며 추가로 -Z, -B, -A 옵션에 대하여 알아보도록 하겠습니다.
하위 디렉토리 파일 내용 검색
$ sudo grep -r "test file" /
이전 find 명령과 동일하게 루트 경로부터 검색하기 위해서 sudo 명령을 사용하였습니다.
결과를 보면 각 파일 안에 "test file" 이 포함되어 있는 것을 알 수있습니다.
해당 문자열이 포함된 한 줄을 출력합니다.
특정 문자열이 포함된 파일명 검색
$ sudo grep -l -r "test file"
-l 옵션을 사용할 경우 파일명만 출력되는 것을 알 수 있습니다.
특정 문자열 제외 하여 파일 검색
$ sudo grep -v -r "test file" /
만약 해당 문자열이 포함되지 않는 내용을 출력하기 위해선 -v 옵션을 사용합니다.
특정 문자열이 포함된 행 번호 표시
$ sudo grep -n -r "test file" /
특정 문자열이 포함된 행 번호가 파일명 오른쪽에 출력되는 것을 알 수 있습니다.
ls 명령어 grep 사용하여 필터링
$ ls -al / | grep bin
위와 같이 '|' 파이프 명령어를 사용하여 grep의 인자로 전달할 수 있습니다.
"grep bin" 명령은 찾을 패턴은 "bin"이라는 단어이고 입력 문자열은 파이이프를 통해 입력 받겠다는 의미입니다.
따라서 ls -al 출력 결과 문자열이 입력으로 들어갑니다.