[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