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
옵션을 사용하면 된다.
댓글