Linux에서 유용한 20가지 egrep 명령 예제


요약: 이 가이드에서는 egrep 명령의 실제 예에 대해 설명합니다. 이 가이드를 따르면 사용자는 Linux에서 보다 효율적으로 텍스트 검색을 수행할 수 있습니다.

로그에서 필요한 정보를 찾을 수 없어 좌절한 적이 있습니까? 대규모 데이터 세트에서 필요한 정보를 추출하는 것은 복잡하고 시간이 많이 소요되는 작업입니다.

운영 체제가 올바른 도구를 제공하지 않으면 상황이 정말 어려워지고 여기에 Linux가 당신을 구출합니다. Linux는 sed, cut 등과 같은 다양한 텍스트 필터링 유틸리티를 제공합니다.

그러나 egrep은 Linux에서 텍스트 처리를 위해 가장 강력하고 일반적으로 사용되는 유틸리티 중 하나이며 egrep 명령의 몇 가지 예에 대해 논의할 것입니다.

Linux의 egrep 명령은 파일의 특정 패턴을 검색하고 일치시키는 데 사용되는 grep 명령 계열에서 인식됩니다. grep -E(grep Extended regex)와 유사하게 작동하지만 대부분 특정 파일 또는 줄을 검색하여 주어진 파일의 줄을 줄이거나 인쇄합니다.

egrep 명령의 구문은 다음과 같습니다.

$ egrep [OPTIONS] PATTERNS [FILES]

예제를 사용하기 위해 다음 내용으로 샘플 텍스트 파일을 만들어 보겠습니다.

$ cat sample.txt

여기에서 텍스트 파일이 준비되었음을 알 수 있습니다. 이제 일상적으로 사용할 수 있는 몇 가지 일반적인 예를 살펴보겠습니다.

아래 명령을 사용하여 sample.txt 파일에서 professional 문자열을 검색할 수 있는 간단한 패턴 일치 예제부터 시작하겠습니다.

$ egrep professionals sample.txt

여기에서 명령이 지정된 패턴을 포함하는 행을 인쇄하는 것을 볼 수 있습니다.

일치하는 패턴을 강조 표시하여 출력을 더 유익하게 만들 수 있습니다. 이를 위해 egrep 명령의 --color 옵션을 사용할 수 있습니다. 예를 들어 아래 명령은 professionals 텍스트를 빨간색으로 강조 표시합니다.

$ egrep --color=auto professionals sample.txt

여기에서 동일한 출력이 이전 출력에 비해 더 많은 정보를 제공한다는 것을 알 수 있습니다. 또한 professional이라는 단어가 두 번 반복되는 것을 쉽게 식별할 수 있습니다.

대부분의 Linux 시스템에서 위의 설정은 기본적으로 다음 별칭을 사용하여 활성화됩니다.

$ alias egrep='egrep –color=auto'

egrep 명령은 여러 파일을 인수로 허용하므로 여러 파일에서 특정 패턴을 검색할 수 있습니다. 예를 들어 이것을 이해합시다.

먼저 sample.txt 파일의 복사본을 만듭니다.

$ cp sample.txt sample-copy.txt

이제 두 파일에서 professionals 패턴을 검색합니다.

$ egrep professionals sample.txt sample-copy.txt 

위의 예에서 출력에서 파일 이름을 볼 수 있으며 이는 해당 파일에서 일치하는 줄을 나타냅니다.

때때로 우리는 패턴이 파일에 존재하는지 여부를 알아낼 필요가 있습니다. 그렇다면 현재 몇 줄에 있습니까? 이러한 경우 명령의 -c 옵션을 사용할 수 있습니다.

예를 들어, 아래 명령은 professionals라는 단어가 한 줄에만 있기 때문에 출력으로 1을 표시합니다.

$ egrep -c professionals sample.txt

1

이전 예에서 -c 옵션이 패턴의 발생 횟수를 계산하지 않는 것을 보았습니다. 예를 들어, professionals라는 단어는 같은 줄에 두 번 나타나지만 -c 옵션은 이를 단일 일치로만 취급합니다.

이러한 경우 명령의 -o 옵션을 사용하여 일치하는 패턴만 인쇄할 수 있습니다. 예를 들어, 아래 명령은 두 개의 개별 행에 professionals라는 단어를 표시합니다.

$ egrep -o professionals sample.txt

이제 wc 명령을 사용하여 행 수를 계산해 보겠습니다.

$ egrep -o professionals sample.txt | wc -l

위의 예에서 egrep 및 wc 명령의 조합을 사용하여 특정 패턴의 발생 횟수를 계산했습니다.

기본적으로 egrep은 대소문자를 구분하여 패턴 일치를 수행합니다. 그것은 단어를 의미합니다. we, We, we, WE는 다른 단어로 취급됩니다. 그러나 -i 옵션을 사용하여 대소문자를 구분하지 않는 검색을 시행할 수 있습니다.

예를 들어 아래 명령에서 패턴 일치는 weWe 텍스트에 대해 성공합니다.

$ egrep -i we sample.txt 

이전 예에서 egrep 명령이 부분 일치를 수행하는 것을 보았습니다. 예를 들어, we 텍스트를 검색했을 때 다른 텍스트에서도 패턴 일치가 성공했습니다. 웹, 웹사이트 등이었습니다.

이 제한을 극복하기 위해 전체 단어 일치를 적용하는 -w 옵션을 사용할 수 있습니다.

$ egrep -w we sample.txt

지금까지 egrep 명령을 사용하여 주어진 패턴이 있는 줄을 인쇄했습니다. 그러나 때때로 우리는 반대 방식으로 작업을 수행하고 싶을 때가 있습니다.

예를 들어, 주어진 패턴이 존재하지 않는 라인을 인쇄하고 싶을 수 있습니다. -v 옵션을 사용하여 이를 달성할 수 있습니다.

$ egrep -v we sample.txt

여기에서 명령이 we 텍스트를 포함하지 않는 모든 행을 인쇄하는 것을 볼 수 있습니다.

명령의 -n 옵션을 사용하여 패턴 일치가 성공할 때 출력에 줄 번호를 표시하는 줄 번호 매기기를 활성화할 수 있습니다. 이 간단한 트릭은 출력을 더 의미 있게 만듭니다.

$ egrep -n professionals sample.txt

위의 출력에서 professionals라는 단어가 5번째 줄에 있음을 알 수 있습니다.

자동 모드에서 egrep 명령은 일치하는 패턴을 인쇄하지 않습니다. 따라서 패턴 일치가 성공했는지 여부를 식별하기 위해 명령의 반환 값을 사용해야 합니다.

명령의 -q 옵션을 사용하여 쉘 스크립트를 작성하는 동안 편리하게 사용할 수 있는 자동 모드를 활성화할 수 있습니다.

$ egrep -q professionals sample.txt
$ egrep -q non-existing-pattern sample.txt

이 예에서 0 반환 값은 패턴이 있음을 나타내는 반면 0이 아닌 값은 패턴이 없음을 나타냅니다.

때로는 일치하는 패턴 주위에 몇 줄을 표시하는 것이 좋습니다. 이러한 시나리오의 경우 일치하는 패턴 앞에 N 줄을 표시하는 명령의 -B 옵션을 사용할 수 있습니다.

예를 들어, 아래 명령은 패턴 일치가 성공한 줄과 그 앞의 두 줄을 인쇄합니다.

$ egrep -B 2 -n professionals sample.txt 

이 예에서는 줄 번호를 표시하기 위해 -n 옵션을 사용했습니다.

비슷한 방법으로 명령의 -A 옵션을 사용하여 패턴 일치 후 행을 표시할 수 있습니다. 예를 들어, 아래 명령은 패턴 일치가 성공한 줄과 다음 두 줄을 인쇄합니다.

$ egrep -A 2 -n professionals sample.txt

이 외에도 egrep 명령은 -A-B 옵션의 기능을 결합한 -C 옵션을 지원합니다. 일치하는 패턴 전후의 라인.

$ egrep -C 2 -n professionals sample.txt 

이전에 논의한 바와 같이 여러 파일에서 패턴 일치를 수행할 수 있습니다. 그러나 파일이 여러 하위 디렉토리에 있고 모든 파일을 명령 인수로 전달하면 상황이 까다로워집니다.

이러한 경우 다음 예제와 같이 -r 옵션을 사용하여 재귀적으로 패턴 일치를 수행할 수 있습니다.

먼저 2개의 하위 디렉터리를 만들고 sample.txt 파일을 복사합니다.

$ mkdir -p dir1/dir2
$ cp sample.txt dir1/
$ cp sample.txt dir1/dir2/

이제 재귀적 방법으로 검색 작업을 수행해 보겠습니다.

$ egrep -r professionals dir1

위의 예에서 dir1/dir2/sample.txt 및 dir1/sample.txt 파일에 대해 패턴 일치가 성공한 것을 볼 수 있습니다.

(.) 문자를 사용하여 줄 끝을 제외한 모든 단일 문자와 일치시킬 수 있습니다. 예를 들어 아래 정규식은 har, hat 및 has라는 텍스트와 일치합니다.

$ egrep "ha." sample.txt

별표 (*)를 사용하여 이전 문자의 0개 이상의 항목을 일치시킬 수 있습니다. 예를 들어, 아래 정규식은 we 문자열과 0개 이상의 b 문자가 뒤따르는 문자열을 포함하는 텍스트와 일치합니다.

$ egrep "web*" sample.txt

더하기 (+)를 사용하여 이전 문자의 하나 이상의 발생과 일치시킬 수 있습니다. 예를 들어, 아래 정규식은 we 문자열과 그 뒤에 b 문자가 한 번 이상 나타나는 텍스트와 일치합니다.

$ egrep "web+" sample.txt

여기서 우리는 wewe라는 단어에 대해 패턴 일치가 성공하지 못한 것을 볼 수 있습니다. 이는 b 문자가 없기 때문입니다.

캐럿 (^)을 사용하여 줄의 시작을 나타낼 수 있습니다. 예를 들어 아래 정규식은 We 텍스트로 시작하는 줄을 인쇄합니다.

$ egrep "^We" sample.txt

달러 ($)를 사용하여 줄의 끝을 나타낼 수 있습니다. 예를 들어 아래 정규식은 e. 텍스트로 끝나는 줄을 인쇄합니다.

$ egrep "e.$" sample.txt

캐럿 (^) 바로 다음에 달러 ($) 를 사용하여 빈 줄을 나타낼 수 있습니다. 정규 표현식에서 이것을 사용하여 빈 줄을 제거해 보겠습니다.

$ egrep -n -v "^$" sample.txt

위의 출력에서 라인 번호 2, 4, 6, 8, 10이 비어 있으므로 표시되지 않는 것을 볼 수 있습니다.

이 기사에서는 egrep 명령의 몇 가지 유용한 예에 대해 논의했습니다. 일상 생활에서 이러한 예를 사용하여 생산성을 향상시킬 수 있습니다.

Linux에서 egrep 명령의 다른 가장 좋은 예를 알고 있습니까? 아래 의견에 귀하의 의견을 알려주십시오.