웹사이트 검색

Linux/UNIX의 Grep 명령


Linux 및 Unix 시스템에서 "global regular expression print\의 줄임말인 Grep은 정규식에 포함된 텍스트 파일을 검색하고 일치시키는 데 사용되는 명령입니다. 또한 이 명령은 모든 Linux 배포판에 미리 설치되어 있습니다. 이 가이드에서 몇 가지 예를 통해 일반적인 grep 명령 사용법을 살펴보겠습니다.

Linux의 Grep 명령

Grep 명령을 사용하여 텍스트 파일에서 정규식이나 문자열을 찾거나 검색할 수 있습니다. 이를 시연하기 위해 welcome.txt 텍스트 파일을 만들고 표시된 대로 일부 콘텐츠를 추가해 보겠습니다.

Welcome to Linux !
Linux is a free and opensource Operating system that is mostly used by
developers and in production servers for hosting crucial components such as web
and database servers. Linux has also made a name for itself in PCs.
Beginners looking to experiment with Linux can get started with friendlier linux
distributions such as Ubuntu, Mint, Fedora and Elementary OS.

엄청난! 이제 몇 가지 grep 명령을 수행하고 출력을 조작하여 원하는 결과를 얻을 준비가 되었습니다. 파일에서 문자열을 검색하려면 구문 아래의 명령을 실행하십시오.

$ grep "string" file name

또는

$ filename grep "string"

예:

$ grep "Linux" welcome.txt
$ grep "string" /path/to/file

--color 옵션을 사용하여 Grep 결과 색상 지정

텍스트의 나머지 부분과 다른 색상으로 검색 문자열이나 패턴을 표시하지 않는 시스템에서 작업하는 경우 --color를 사용하여 결과를 돋보이게 만드세요. 예

$ grep --color "free and opensource" welcome.txt 

모든 디렉토리에서 반복적으로 문자열 검색

현재 디렉토리와 다른 모든 하위 디렉토리에서 문자열을 검색하려면 다음과 같이 -r 플래그를 사용하여 검색하십시오.

$ grep -r "string-name" *

예를 들어

$ grep -r "linux" *

대소문자 구분 무시

위의 예에서 문자열 "Linux\가 대문자로 지정되었고 파일에도 대문자로 존재하기 때문에 검색 결과가 원하는 결과를 얻었습니다. 이제 문자열을 소문자로 검색해 봅시다.

$ grep "linux" file name

출력에서 아무것도 나오지 않습니까? 이는 첫 글자가 소문자이기 때문에 grepping이 "linux” 문자열을 찾아서 일치시킬 수 없기 때문입니다. 대소문자 구분을 무시하려면 -i 플래그를 사용하고 아래 명령을 실행하십시오.

$ grep -i "linux" welcome.txt

문자열이 -c 옵션과 일치하는 줄을 센다.

문자열 패턴이 나타나거나 상주하는 총 줄 수를 계산하려면 아래 명령을 실행하십시오.

$ grep -c "Linux" welcome.txt

Grep을 사용하여 출력 반전

Grep 출력을 반전하려면 -v 플래그를 사용하십시오. -v 옵션은 grep이 표현식을 포함하지 않거나 일치하지 않는 모든 행을 인쇄하도록 지시합니다. –v 옵션은 grep에게 출력을 반전시키도록 지시합니다. 즉, 일치하는 줄을 인쇄하는 대신 반대 작업을 수행하여 표현식과 일치하지 않는 모든 줄을 인쇄합니다. 파일로 돌아가서 표시된 대로 줄 번호를 표시해 보겠습니다. Vim 편집기에서 ESC를 누르고 전체 콜론을 입력한 다음

 set nu
$ grep -v "Linux" welcome.txt

-n 옵션을 사용하여 검색 패턴을 포함하는 줄에 번호를 매깁니다.

문자열 패턴이 일치하는 줄에 번호를 매기려면 다음과 같이 -n 옵션을 사용하십시오.

$ grep -n "Linux" welcome.txt

-w 옵션을 사용하여 정확히 일치하는 단어 검색

-w 플래그를 전달하면 표시된 것처럼 정확히 일치하는 단어가 포함된 줄을 검색합니다.

$ grep -w "opensource" welcome.txt
$ grep -w "open" welcome.txt

패턴이 아니라 정확한 단어를 검색하기 때문에 결과가 반환되지 않습니다!

grep과 함께 파이프 사용

grep 명령은 뚜렷한 출력을 얻기 위해 파이프와 함께 사용할 수 있습니다. 예를 들어 Ubuntu 시스템에 특정 패키지가 설치되어 있는지 알고 싶다면 다음을 실행하십시오.

$ dpkg -L | grep "package-name"

예를 들어 OpenSSH가 시스템에 설치되었는지 확인하려면 dpkg -l 명령을 grep에 다음과 같이 연결합니다.

$ dpkg -L | grep -i "openssh"

검색 패턴 전후 라인 수 표시 파이프 사용

-A 또는 -B를 사용하여 검색 문자열 앞이나 뒤에 오는 줄 수를 표시할 수 있습니다. -A 플래그는 검색 문자열 뒤에 오는 행을 나타내고 -B는 검색 문자열 앞에 나타나는 출력을 인쇄합니다. 예를 들어

$ ifconfig | grep -A 4 ens3
$ ifconfig | grep -B 4 ether

정규 표현식과 함께 grep 사용(REGEX)

REGEX라는 용어는 REGular EXpression의 약어입니다. REGEX는 패턴을 일치시키는 데 사용되는 일련의 문자입니다. 다음은 몇 가지 예입니다.

^      Matches characters at the beginning of a line
$      Matches characters at the end of a line
"."    Matches any character
[a-z]  Matches any characters between A and Z
[^ ..] Matches anything apart from what is contained in the brackets

예 특정 문자로 시작하는 행을 인쇄하려면 구문은 다음과 같습니다.

grep ^character file_name

예를 들어 welcome.txt 파일에서 문자 "d\로 시작하는 줄을 표시하려면 다음을 실행합니다.

$ grep ^d welcome.txt 
$ grep x$ welcome.txt

더 많은 Grep 옵션에 대한 도움말 얻기

Grep 명령 사용법에 대해 자세히 알아보려면 아래 명령을 실행하여 명령과 함께 사용할 수 있는 다른 플래그 또는 옵션을 미리 볼 수 있습니다.

$ grep --help