본문 바로가기

IT/Linux

[Linux] grep 명령어에서 AND, OR, NOT 조건 사용하기

grep 명령어에서 AND, OR 그리고 NOT(특정 패턴 제외) 조건들을 사용할 수 있는 방법을 알아보자

 

환경

  • Linux 기반 시스템
  • Bash shell(/bin/bash)

 

grep이란?

grep

  • grep: 들어오는 입력에 대해서 주어진 패턴을 포함하는 줄들을 출력해주는 명령어입니다.

# Basic Usage $ grep [OPTIONS] PATTERN [FILE...] $ grep [OPTIONS] [-e PATTERN | -f FILE] [FILE...] # Example 1 $ grep pattern filename # Example 2 $ cat << EOF | grep example > test > example > example1 > example+test > this > is > EOF example example1 example+test

 

AND 조건 사용법

용도

  • 패턴들이 모두 포함된 줄들을 출력합니다.

 

(방법1) grep을 여러번 이용

  • Pipe를 이용해 여러번 사용합니다.

$ cat test.txt | grep pattern1 | grep pattern2

 

(방법2) -E 옵션을 이용

  • -E 옵션을 사용합니다.
  • Regular Expression을 이용해 grep 명령어를 사용할 수 있으며 아래와 같은 경우에 pattern1과 pattern2가 동시에 나오는 줄들을 출력하지만 순서도 pattern1 다음에 pattern2가 있는 줄들을 출력하게 됩니다.

$ grep -E grep "pattern1.*pattern2"

  • 다음 아래처럼 사용하면 순서에 상관 없이 두 패턴이 동시에 포함된 줄들을 출력합니다.

$ grep -E grep "pattern1.*pattern2|pattern2.*pattern1"

 

OR 조건 사용법

용도

  • 패턴들 중 하나라도 포함하고 있는 줄들을 출력합니다.

 

(방법1) -e 옵션을 이용

$ cat test.txt | grep -e pattern1 -e pattern2

 

(방법2) -E 옵션을 이용

$ cat test.txt | grep -E "pattern1|pattern2"

 

NOT 조건 사용법

용도

  • 특정 패턴이 포함되지 않은 줄들을 출력합니다.

 

(방법) -v 옵션을 이용

# Example 1 $ cat test.txt | grep -v pattern # Example 2 $ cat test.txt | grep -v pattern1 | grep -v pattern2

 

출저 : https://twpower.github.io/173-grep-and-or-not