엔지니어링

리눅스 grep 명령어

당나귀🐴 2022. 5. 4. 01:20

보통 두 가지 상황에서 grep 을 사용합니다.

  1. 파일 내 특정 단어를 포함한 행을 찾으려고 할 때
  2. 표준 출력에서 특정 단어를 포함한 행을 찾으려고 할때

특정 단어와 일치하는 행을 찾을 수도 있고, 정규식과 일치하는 행을 찾을 수도 있습니다.

  • 🔔 grep 의 결과는 행을 찾는 것입니다.
  • 예를 들어, 스트림 형태의 json은 한줄로 이루어진 형태이기 때문에 grep 으로 원하는 결과를 찾기 어려울 수 있습니다.

 

grep 의 사용법은 다음과 같습니다.

$ grep [옵션] [패턴] [파일 혹은 표준출력]

문자열과 일치하는 행을 찾는 방법

  • $ grep hello 파일명 는 파일에 hello 라고 표현되는 행을 찾습니다.
  • $ grep hello 파일명1 파일명2 이렇게 두개의 파일을 대상으로 사용할 수 있습니다.
  • $ grep hello *.py py 라는 확장자를 가진 모든 파일을 대상으로 hello 가 포함된 행을 찾을 수 있습니다.

정규식이 포함된 행을 찾는 방법

  • $ grep [정규식] 파일명 으로 사용하면됩니다.
  • $ grep [KL]ing 파일명 으로 사용하면 King 혹은 Ling 을 포함하는 행을 찾습니다.

grep 과 관련된 옵션

  • -c : 일치하는 행의 수 출력
  • -i : 대소문자를 구별하지 않음
  • -v : 일치하지 않는 행만 출력
  • -n : 행번호도 함께 출력
  • -l : 파일의 이름 출력
  • -w : 단어 단위로 검색 후 출력
  • -x : 라인 단위로 검색 후 출력
  • -r : 경로에서 하우 경로 모두 검색

파이프라인과 연결

grep 을 사용할 때, 파일 내에 포함된 내용을 찾을 때도 있지만 | 를 통해 파이프라인으로 전달받은 결과에서 일치하는 행을 찾곤합니다.

예를 들어, 프로세스 중 python 으로 실행된 프로세스를 찾을 때는 모든 프로세스를 출력하는 ps -ef 명령어와 연결합니다.

  • $ ps -ef | grep python

내 python 환경에 pandas 가 설치되었는지 확인해 보고싶을 때는 다음과 같습니다.

  • $ pip list | grep pandas