승상의 코딩 블로그

리눅스 검색 명령어 - grep 본문

Linux (리눅스)

리눅스 검색 명령어 - grep

양승상 2023. 1. 24. 23:18
반응형

grep 명령어

grep 명령어에 대한 정보를 알아보기 위해 터미널에 "man grep" 을 입력해보자

man grep

grep 명령어를 사용하면 파일 내부의 데이터를 검색할 수 있다.
실제로 매우 많이 쓰이고 유용한 명령어 중 하나입니다.
개인적으로는, 특정 로깅 객체의 로그를 볼 때나, 로깅 레벨을 볼 때, grep 을 사용해서 각 라인을 검색할 때 자주 쓴다.
(리눅스 내부 파일들의 데이터(네트워크 정보 등..)를 볼 때도 많이 사용한다. 사용처가 너무 많다.)

사용 형태.

grep [옵션] [검색패턴] [파일]

# 개인적으로 자주 사용하는 옵션
-i 대소문자 구분하지 않고 검색
-w 단어단위로 검색
-r 폴더를 기준으로 하위폴더까지 재귀적 검색
-c 검색결과의 갯수를 출력
-A{number} 뒤로 number 수 만큼의 라인을 출력 
-B{number} 앞으로 number 수 만큼의 라인을 출력
-n 검색된 행을 추가함
-m{number} 검색결과를 number 수 만큼으로 제한

grep -i, grep -w
옵션 i 는 대소문자 구별하지 않음. ex. "apple" 을 검색할 때, "Apple", "AppLe" 등의 단어도 검색 결과에 포함한다.
옵션 w 는 단어만 찾기 ex. "apple"을 검색할 때, "pineapple" 단어는 검색에서 제외된다.

검색 파일(좌) grep / grep -i / grep -w (우)
grep "apple" A.txt
# apple 이 포함된 부분을 검색
# Apple 과 같이 대소문자가 다를 경우 검색되지 않음.

grep -i "apple" A.txt 
# 대소문자 구분하지 않고 apple 단어가 포함된 부분을 검색

grep -w "apple" A.txt
# apple 이라는 단어를 검색.
# apples 같은 단어는 검색되지 않음.

grep -r

폴더를 기준으로도 사용할 수 있다.
-r 옵션은 검색하는 경로 기준으로 하위 디렉토리 파일의 내부까지 모두 검색한다.

A.txt 가 Test2 폴더 내에도 동일하게 존재함.(좌) grep -r (우)
grep -r "apple" .
# 현재 경로 기준으로 하위폴더 파일까지, apple 이라는 단어를 검색

grep -c

c 옵션은 검색한 결과 대신에 검색한 항목의 카운트를 제공한다.

grep -c

apple 이라는 이름이 나오는 횟수를 체크하고 싶을 때 -c 옵션을 사용하면 된다.
실제 검색결과에서는 4개가 나왔고, 카운팅 했을 때 4로 나온다.

grep -A{number} / grep -B{number}

검색한 결과의 문맥 등을 확인하기 위해, 앞뒤의 정보를 봐야하는 경우도 있다.
-A{number}는 검색한 결과 기준, 뒤로 {number} 라인 수 만큼 출력한다.
-B{number}는 검색한 결과 기준, 앞으로 {number} 라인 수 만큼 출력한다.

grep -A{number} / grep -B{number}

-c 가 아닌 -C{number} 를 사용하면, 앞뒤로 {number} 라인 수 만큼 출력한다.

grep -n

출력한 결과의 라인 수를 알려준다.
파일의 검색한 부분에 수정이 필요할 경우, 어디위치에 있는지 찾을 필요가 있다.
이 때, -n 옵션으로 line number 를 찾은 뒤에, vi 편집기에서 :{line number} 를 입력하면 바로 이동이 가능하다.

grep -n

grep -m{number}

데이터의 양을 제한할 수 있다.
number 의 수만큼만 검색결과를 출력한다.

grep -m

apple 이 2개 있지만, -m1 옵션을 통해 첫 apple 만 출력되도록 했다.

실시간 특정 로그 추적하기

이전에 tail -f 명령어와 함께 사용하면, 실시간 로그도 추적이 가능하다.

tail -f "로그 파일명" | grep -i "필터링 패턴"
tail -f / grep

tail -f 는 실시간 파일 변화를 추적해준다. 여기에 grep 을 사용해서 필터링을 할 수 있다.
실시간으로 특정 로그만 보고 싶을 때, 자주 사용한다.

* grep 은 정규표현식을 사용한 검색도 가능하다. 정규표현식과 함께 사용하면, 검색의 유연성이 커진다.

반응형
Comments