본문 바로가기
Programming/Linux

[Linux] grep 설명/사용방법/간단예

by 고양이해적 2023. 1. 27.

📌  grep 

global regular expression print 의 약자로,

정규표현식을 사용하여 파일 혹은 명령어결과 내 특정/어떤 내용을 찾기 위해서 쓰이는 명령어다.

파일 혹은 명령어결과 내 지정한 정규표현식 패턴과 일치한 라인/결과를 출력 한다.

 

사용법: grep [옵션]... 패턴 [파일]...

 

✅ 대표적인 옵션 몇가지만 예시로 아래표로 정리해보았다.

더 많은 옵션들은 man grep 명령어를 사용해서 확인 할 수 있다.

옵션 설명 사용 예시
-i --ignore-case
대소문자를 구별하지 않는다.
grep -i 'hello' grep.txt
-n --line-number
행번호를 붙여서 출력한다.
grep -n 'hello' grep.txt
-v --invert-match
패턴으로 매칭되지 않는 라인을 출력한다.
grep -v '^hello' grep.txt
-w --word-regexp
단어(문자열)가 일치하는 라인을 출력 한다.
grep -w 'hello' grep.txt

 

 

예시를 위해 만든 grep.txt 라는 파일 이다.

테스트를 위해 총 12 line을 가진 임의의 내용으로 작성 했다.

grep.txt

 

✅ 옵션 : -i (대소문자 구별X)

옵션 : -i

리눅스는 기본적으로 대소문자를 구별하기 때문에

'hello' 는  -i 옵션 유무에 따라 'hello', 'Hello' 를 포함하는 라인의 출력 결과가 다른걸 확인 할 수 있다.

 

 

✅ 옵션 : -n (행번호 출력O)

옵션 : -n

 

출력결과에 파일의 행번호를 함께 출력한다.

예시처럼 옵션을 여러개 줄 수도 있다. 

 

 

 

✅ 옵션 : -v (패턴일치X)

옵션 : -v

'^[0-9]' 의 의미는 '행의 시작 지시자가 숫자로 시작하는' 정규식 정도로 풀이 할 수 있겠다.

따라서 '행의 시작 지시자가 숫자로 시작하지 않는 패턴을 출력하되, 행번호도 함께 출력하라' 는 의미이다.

 

패턴이 일치하는걸 찾으려면 -v를 안쓰면 된다.

(너무당연해서 쓰지말까 하다 혹시몰라서....) 👀👀

 

 

✅ 옵션 : -w 단어(문자열) 일치

옵션 : -w

전체를 구성하는 단어가 일치하는 행만 출력한다.

여기서 단어는 한 라인에 공백을 기준으로 구분된 완전히 일치하는 단어를 뜻한다.

 

상기의 사유로 'linux' 단어를 포함하는 행을 출력하고 싶을때,

'linux study' 와 'linux_study' 는 -w 옵션으로는 정규식을 사용해도 출력되지 않는다.

 

만약 'linux'를 포함한 모든 라인을 출력하기 원할때는

예시처럼 'linux*' 정규식 메타문자를 사용한다.

 

 

✅ grep 활용 (여러개 출력)

 

grep [패턴1] | grep [패턴2] grep.txt

 

| (pipe line) 문자열을 활용해서 여러개의 grep 결과를 합칠수있다.

1 | 2 형식은 1명령어의 실행결과를 2로 넘겨받아서 명령어를 실행한다.

 

 

1️⃣  'h','H' 대소문자 구별 없이 'w' 문자열이 있는 행번호 출력하기 

활용1

 

2️⃣ txt 확장자 파일을 읽고 he,ho로 시작하고 d로 끝나는 라인을 행번호와 출력하기

활용2