2023-11-17 19:55:21

리눅스 명령어 중에 grep이라는 명령어가 있습니다. 실무를 볼 때 아주 아주 중요한 명령어 중에 하나입니다. 보통 어떤 문서에서 특정 문자열을 담은 행들을 찾을 때 많이 사용합니다. 

 

grep 사용법 정리

1. 어떤 파일에서 특정 문자열이 포함된 행을 찾을 때

다음과 같은 내용을 담고 있는 example.txt 라는 파일이 있다고 가정하겠습니다.

 

 

여기서 "심교훈"이라는 문자열을 담고 있는 행들만 보고 싶다면 grep을 활용하여 다음과 같은 명령을 실행하면 됩니다. 

 

grep "심교훈" example.txt

 

 

문서 길이가 짧은 경우라면 딱히 grep 명령을 쓸 이유가 없겠지만, 긴 문서에서 특정 문자열이 포함된 부분만 찾아볼 때는 상당히 유용하게 쓸 수 있습니다. 특히 로그를 담고 있는 매우 긴 파일에서 특정 에러 메시지 부분만 보고 싶다면 grep 명령이 도움이 될 것입니다.

 

2. 어떤 파일에서 여러 개의 문자열을 동시에 담고 있는 행을 찾을 때

위 example.txt에서 "by"라는 문자열과 "교훈"이라는 문자열을 모두 포함하고 있는 행을 찾을 때는 cat 명령과 함께 조합하여 다음과 같은 명령을 실행하시면 됩니다. 

 

cat example.txt | grep "by" | grep "교훈"

 

 

3. 정규식으로 찾기

grep으로 검색할 때 정규식을 활용할 수도 있습니다. "세자리숫자-네자리숫자-네자리숫자" 전화번호 패턴을 갖는 문자열을 포함한 행들을 모두 찾아보겠습니다. 

 

grep "\d\{3\}-\d\{4\}-\d\{4\}" example.txt

 

 

 

4. 검색할 때 대소문자 무시하기

검색시 대소문자를 무시하고 싶으면 -i 또는 --ignore-case 옵션을 붙여주면 됩니다. 

 

grep -i "By" example.txt

 

 

5. 실시간으로 로그를 출력할 때 특정 문자열이 포함된 행만 출력되게 하기

myapp.log라는 파일에 실시간으로 찍히는 로그 중에서 "[ERROR]"라는 문자열이 포함된 경우만 터미널에 출력되게 하려면 다음과 같은 명령을 주면 됩니다.

 

tail -f myapp.log | grep "[ERROR]"

 

 

이 외에도 grep은 다양한 방식으로 많이 사용되니 아직 안 써보셨다면 써보시길 바랍니다.^^