엔지니어링
리눅스 grep 명령어
당나귀🐴
2022. 5. 4. 01:20
보통 두 가지 상황에서 grep 을 사용합니다.
- 파일 내 특정 단어를 포함한 행을 찾으려고 할 때
- 표준 출력에서 특정 단어를 포함한 행을 찾으려고 할때
특정 단어와 일치하는 행을 찾을 수도 있고, 정규식과 일치하는 행을 찾을 수도 있습니다.
- 🔔 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