Linux grep 명령의 사용 예

소개

Linux grep 명령은 입력을 필터링하는 방법으로 사용됩니다.

GREP는 Global Regular Expression Printer의 약자이므로 효과적으로 사용하려면 정규식에 대한 지식이 있어야합니다.

이 기사에서는 grep 명령을 이해하는 데 도움이되는 몇 가지 예제를 보여 드리겠습니다.

01 of 09

GREP를 사용하여 파일에서 문자열을 검색하는 방법

Linux grep 명령.

다음 어린이 책 제목이있는 책이라는 텍스트 파일이 있다고 가정 해보십시오.

제목에 "The"라는 단어가있는 모든 책을 찾으려면 다음 구문을 사용하십시오.

grep

다음 결과가 반환됩니다.

각각의 경우에 "The"라는 단어가 강조 표시됩니다.

검색은 대소 문자를 구분하므로 제목 중 하나에 "The"대신 "the"가 있으면 검색 결과가 반환되지 않습니다.

대소 문자를 무시하려면 다음 스위치를 추가하면됩니다.

grep the books --ignore-case

다음과 같이 -i 스위치를 사용할 수도 있습니다.

grep -i the books

02 of 09

와일드 카드를 사용하여 파일에서 문자열 검색

grep 명령은 매우 강력합니다. 다양한 패턴 일치 기술을 사용하여 결과를 필터링 할 수 있습니다.

이 예제에서는 와일드 카드를 사용하여 파일에서 문자열을 검색하는 방법을 보여줍니다.

다음 스코틀랜드 장소 이름을 가진 장소라는 파일이 있다고 상상해보십시오.

aberdeen

수태

어둡게하다

뇌관

반전

뉴 버그

새로운 사슴

새로운 갤러웨이

글래스고

에든버러

이름에 인 버트가있는 모든 장소를 찾으려면 다음 구문을 사용하십시오.

grep inver * places

별표 (*) 와일드 카드는 0 또는 다수를 나타냅니다. 그러므로 당신이 반전이라고 부르는 곳이나 반전이라고 부르는 곳이 있다면 그 두 가지가 돌아올 것입니다.

사용할 수있는 또 다른 와일드 카드는 마침표 (.)입니다. 이 문자를 사용하여 하나의 문자와 일치시킬 수 있습니다.

grep inver.r 장소

위의 명령은 단일 기간으로 표시된 두 개의 r 사이에 와일드 카드가 하나만있을 수 있기 때문에 인 버리 리 (inverseurie) 및 반전 (inverary)이라고하는 장소를 찾지 만 무위 확자는 찾지 않습니다.

마침표 와일드 카드는 유용하지만 검색중인 텍스트의 일부로 문제가 발생할 수 있습니다.

예를 들어이 도메인 이름 목록보기

모든 about.com을 찾으려면 다음 구문을 사용하여 검색하면됩니다.

grep * about * domainnames

목록에 다음 이름이 포함되어 있으면 위의 명령이 실패합니다.

그러므로 다음 구문을 시도해 볼 수 있습니다.

grep * about.com 도메인 이름

다음 이름의 도메인이 없으면 정상적으로 작동합니다.

aboutycom.com

about.com이라는 용어를 찾으려면 다음과 같이 점을 이스케이프 처리해야합니다.

grep * .com 도메인 이름에 대해

마지막 와일드 카드는 0 또는 1 문자를 나타내는 물음표입니다.

예 :

grep? ber placenames

위 명령은 aberdeen, aberystwyth 또는 심지어 berwick을 반환합니다.

03 of 09

grep을 사용하여 줄의 시작과 끝에서 문자열 검색

캐럿 (^) 및 달러 ($) 기호를 사용하면 행의 시작과 끝에서 패턴을 검색 할 수 있습니다.

다음 팀 이름을 가진 football이라는 파일이 있다고 상상해보십시오.

맨체스터에서 시작한 모든 팀을 찾으려면 다음 구문을 사용하십시오.

grep ^ 맨체스터 팀

위의 명령은 맨체스터 시티와 맨체스터 유나이티드를 반환하지만 맨체스터 유나이티드는 반환하지 않습니다.

또는 다음 구문을 사용하여 United으로 끝나는 모든 팀을 찾을 수도 있습니다.

grep United $ teams

위의 명령은 맨체스터 유나이티드와 뉴캐슬 유나이티드를 반환하지만 맨체스터 유나이티드는 반환하지 않습니다.

04 of 09

grep을 사용하여 일치하는 항목 수 계산하기

grep을 사용하여 패턴과 일치하는 실제 라인을 반환하고 싶지는 않지만 몇 개가 있는지 알고 싶으면 다음 구문을 사용할 수 있습니다.

grep -c 패턴 입력 파일

패턴이 두 번 일치하면 숫자 2가 반환됩니다.

09 년 5 월

grep을 사용하여 일치하지 않는 조건 모두 찾기

다음과 같이 나열된 국가의 지명 목록이 있다고 가정 해보십시오.

colwyn bay에는 관련 국가가 없습니다.

국가가있는 모든 장소를 검색하려면 다음 구문을 사용할 수 있습니다.

grep land $ places

결과는 콜윈 베이를 제외한 모든 장소에서 반환됩니다.

이것은 분명히 육지로 끝나는 곳에서만 효과가 있습니다 (거의 과학적이지는 않습니다).

다음 구문을 사용하여 select를 반전시킬 수 있습니다.

grep -v land $ places

이것은 땅으로 끝나지 않은 모든 장소를 발견 할 것입니다.

06 년 6 월

grep을 사용하는 파일에서 빈 줄을 찾는 방법

타사 응용 프로그램에서 사용하는 입력 파일이 있다고 가정하고 다음과 같이 빈 줄을 찾으면 파일 읽기를 중지합니다.

응용 프로그램이 liverpool 후 줄에 도착하면 colwyn bay가 완전히 누락되었다는 의미를 읽지 않게됩니다.

grep을 사용하여 다음 구문으로 빈 줄을 검색 할 수 있습니다.

grep ^ $ places

불행히도 이것은 빈 줄만 반환하기 때문에 특히 유용하지 않습니다.

물론 파일이 다음과 같이 유효한지 확인하기 위해 빈 줄 수를 계산할 수 있습니다.

grep -c ^ $ places

그러나 빈 줄이있는 줄 번호를 알고 있으면이를 대체 할 수 있으므로 더 유용 할 것입니다. 다음 명령을 사용하여이를 수행 할 수 있습니다.

grep -n ^ $ places

07 09

grep을 사용하여 대문자 또는 소문자로 된 문자열을 검색하는 방법

grep을 사용하면 다음 구문을 사용하여 파일의 어떤 줄이 대문자인지 결정할 수 있습니다.

grep '[AZ]'파일 이름

대괄호 []는 문자의 범위를 결정하게합니다. 위의 예에서 A와 Z 사이에있는 모든 문자를 찾습니다.

따라서 소문자와 일치 시키려면 다음 구문을 사용할 수 있습니다.

grep '[az]'파일 이름

숫자 나 다른 기호가 아닌 문자 만 일치 시키려면 다음 구문을 사용할 수 있습니다.

grep '[a-zA-Z]'파일 이름

다음과 같이 숫자를 동일하게 처리 할 수 ​​있습니다.

grep '[0-9]'파일 이름

08 년 9 월

grep을 사용하여 반복되는 패턴 찾기

중괄호 {}를 사용하여 반복 패턴을 검색 할 수 있습니다.

다음과 같이 전화 번호가 포함 된 파일이 있다고 가정 해보십시오.

숫자의 첫 번째 부분은 세 자리 여야하며이 패턴과 일치하지 않는 행을 찾고 싶습니다.

이전 예에서 [0-9]는 파일의 모든 숫자를 반환한다는 것을 알고 있습니다.

이 예에서는 세 개의 숫자와 하이픈 (-)으로 시작하는 줄을 원합니다. 다음 구문을 사용하여이를 수행 할 수 있습니다.

grep "^ [0-9] [0-9] [0-9] -"숫자

앞의 예제에서 알 수 있듯이 캐럿 (^)은 줄이 다음 패턴으로 시작해야 함을 의미합니다.

[0-9]는 0과 9 사이의 숫자를 검색합니다. 3 회 포함되어 3 개의 숫자와 일치합니다. 마지막으로 하이픈이 세 숫자를 따라야한다는 것을 나타내는 하이픈이 있습니다.

중괄호를 사용하면 다음과 같이 검색을 더 작게 만들 수 있습니다.

grep "^ [0-9] \ {3 \} -"숫자

슬래시는 {bracket}을 이스케이프 처리하여 정규 표현식의 일부로 작동하지만 본질적으로 [0-9] {3}은 0과 9 사이의 임의의 수를 세 번 의미합니다.

중괄호는 다음과 같이 사용할 수도 있습니다.

{5,10}

{5,}

{5,10}은 검색되는 문자가 적어도 5 회 이상 10 회 이상 반복되어야 함을 의미하지만 {5}는 문자가 적어도 5 회 반복되어야한다는 것을 의미하지만 그 이상이 될 수도 있습니다.

09 09

grep을 사용하여 다른 명령의 출력 사용

지금까지 개별 파일 내에서 패턴 일치를 살펴 봤지만 grep은 다른 명령의 출력을 패턴 일치를위한 입력으로 사용할 수 있습니다.

좋은 예는 활성 프로세스를 나열하는 ps 명령을 사용하는 것입니다.

예를 들어 다음 명령을 실행하십시오.

ps -ef

시스템에서 실행중인 모든 프로세스가 표시됩니다.

grep을 사용하여 다음과 같이 특정 실행중인 프로세스를 검색 할 수 있습니다.

ps -ef | grep firefox

개요

grep 명령은 기본적인 Linux 명령이며 터미널을 사용할 때 파일 및 프로세스를 검색 할 때 훨씬 쉽게 사용할 수 있으므로 학습 가치가있는 것입니다.