본문 바로가기
Old Posts/Linux

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

by A6K 2020. 11. 19.

grep은 Bash를 이용해 스크립트를 작성하면서 가장 많이 사용하는 명령 중 하나다. grep은 파일을 읽거나 파이프에서 입력을 받아 특정 패턴을 포함하는 라인만 출력해주는 명령이다.

$ cat test.txt
example1
example2
exam3
ex4
example

$ grep example test.txt
example1
example2
example
$ cat test.txt | grep example
example1
example2
example

주로 특정 패턴에 맞는 내용을 필터링하기 위해 사용한다. 하나 이상의 필터 조건을 AND, OR, NOT 조건으로 사용할 수도 있다.

grep 명령어 AND 조건

두 개 이상의 필터 조건을 모두 만족하는 라인만 출력하고 싶을 때는 grep 명령어를 파이프로 연결해서 사용하면 된다.

$ cat filename | grep pattern1 | grep pattern2

test.txt에 존재하는 모든 라인을 중 pattern1과 pattern2를 만족하는 라인만 출력된다.

-E 옵션을 사용하는 방법도 있다.

$ cat filename | grep -E 'pattern1.*pattern2'

pattern1이 먼저나오고 pattern2가 나오는 경우를 출력한다. 정규식을 생각하면된다.

grep - OR 조건

여러개의 패턴 중 하나라도 포함하고 있는 모든 라인을 출력하고 싶을 때, 여러 패턴을 OR 조건으로 묶어야 한다.

$ cat filename | grep -e pattern1 -e pattern2

-e 옵션을 이용해서 하나의 grep 명령에 여러개의 패턴을 줄 수 있다.

$ cat filename | grep -E "pattern1|pattern2"

-E 옵션을 이용해서 두 개의 조건을 '|'(OR)로 묶어서 사용할 수도 있다.

grep - NOT 조건

특정 패턴이 포함된 라인만 출력에서 제거하고 싶을 때가 있다.

$ grep -v 'pattern1' filename

-v 옵션을 사용하면 된다.

댓글