✔ OS/2. Linux

[Linux] grep 명령어로 내가 원하는 여러 값 찾는 방법

  • -
주제:  리눅스 명령어 grep 활용법
작성:  2024-02-23

안녕하세요, 루카스입니다.

개발업무를 진행하다 보면, 본인이 사용하고 있는 특정 패키지 버전 확인이 필요한 경우가 있습니다. 하지만, 패키지가 많은 경우, 일일이 찾는 게 몹시 번거롭습니다.... 감사하게도 리눅스 명령어에 특정 문자열을 찾게 해주는 리눅스 명령어가 있습니다.

바로 오늘 소개할 리눅스 명령어 "grep"입니다.

출처 : Vectorarte on Freepik

grep(Global Regular Expression Print)이란?

그럼 우선 grep에 대해 알아보도록 하겠습니다. grep은 "Global Regular Expression Print"의 약어로, Linux, macOS, Unix 계열 시스템에서 텍스트 파일 내에서 패턴이나 문자열을 검색하는 리눅스 명령어입니다. grep은 정규 표현식을 사용하여 매우 유연하고 강력한 검색 기능을 제공합니다. 단순 텍스트 문자열부터 복잡한 패턴까지 다양한 방식으로 검색이 가능합니다.

grep 사용법

사용법은 간단합니다. [ ] 부분은 옵션부분으로 반드시 작성해야 하는 항목은 아닙니다.
- options : 옵션 사항을 기입하지않는 경우, 지정된 파일 내에서 패턴과 일치하는 모든 라인을 출력함
- pattern : 검색하고자 하는 문자열이나 정규 표현식
- file : 검색 대상 파일

grep [options] pattern [file...]
grep [옵션] 검색하려고하는 문자열이나 정규 표현식 [검색 대상 파일]

위의 options에서 사용할 수 있는 주요 옵션은 다음과 같습니다.

  • -i: Ignore case. 이 옵션은 대소문자 구분 없이 검색 수행
  • -v: Invert match. 이 옵션은 지정된 패턴과 일치하지 않는 행들만을 출력
  • -c: Count. 이 옵션은 패턴과 일치하는 행의 수 출력
  • -n: Line Number. 이 옵션은 출력되는 각 행 앞에 해당 행의 파일 내 줄 번호 추가하여 출력
  • -r 또는 -R: Recursive. 이 옵션은 지정된 디렉터리 및 그 하위 디렉터리에 있는 모든 파일을 재귀적으로 검색
  • -E: Extended Regular Expressions. 이 옵션은 확장된 정규 표현식을 사용하여 검색 수행
grep "example" filename.txt  	# 파일 내에서 "example"이라는 단어를 포함하는 모든 라인을 찾는 경우

grep -i "example" filename.txt  # 대소문자를 구분하지 않고 검색하는 경우

 

[실전] pip로 설치한 패키지 중의 numpy, matplotlib, scipy 버전만 출력되도록 하려면?

pip로 설치한 여러 패키지를 동시에 검색하려면, 정규 표현식을 사용하는 것이 방법입니다.

'pip list' 결과

여러 단어를 검색하기 위해서는 | (파이프) 문자를 사용하여 각 검색어를 구분할 수 있습니다. 단, 이때 | 문자를 사용하기 위해서는 정규 표현식을 활성화하는 -E 옵션을 사용해야 하며, 검색어 전체를 따옴표로 묶어야 합니다.

아래의 명령은 numpy, matplotlib,, scipy, 중 하나라도 포함된 라인을 pip list의 출력에서 찾아줍니다:

pip list | grep -E 'numpy|matplotlib|scipy'
  • pip list : pip 활용하여 설치된 모든 패키지 목록 생성
  • grep -E : 여러 패키지 이름을 포함하는 정규 표현식 적용
  • '검색패키지명 1| 검색패키지명 2|검색패키지명 3' : 본인이 원하는 패키지명을 순차적으로 작성하면 손쉽게 출력

결과값

참고

출처:https://wizardzines.com/comics/grep/

728x90
반응형
Contents

포스팅 주소를 복사했습니다

이 글이 도움이 되었다면 공감 부탁드립니다.