fgrep 명령을 사용하여 파일에서 텍스트 문자열을 찾는 방법


요약: 초보자에게 친숙한 이 가이드에서는 fgrep 명령의 몇 가지 실용적인 예에 대해 설명합니다. 이 가이드를 마치면 사용자는 명령줄 인터페이스를 사용하여 효율적으로 텍스트 검색 작업을 수행할 수 있습니다.

텍스트 검색은 가장 일반적으로 수행되는 작업 중 하나입니다. 그러나 이 간단한 작업은 사용자가 올바른 도구에 익숙하지 않은 경우 빠르게 시간이 소요됩니다. Linux에는 sed, cut 등과 같은 다양한 텍스트 필터링 유틸리티가 있습니다.

그러나 Linux에서는 fgrep이 단순 텍스트 검색에 가장 선호되는 유틸리티입니다. 이 가이드에서는 일상 생활에서 사용할 수 있는 fgrep 명령의 몇 가지 연습 예제에 대해 설명합니다.

Linux의 fgrep 명령은 grep 명령 계열에 속합니다. 그러나 정규식 대신 고정된 문자열 패턴을 검색하는 데 사용됩니다. 따라서 명령의 이름은 fgrep(고정 GREP)입니다.

fgrep 명령의 구문은 다른 grep 계열 명령과 유사합니다.

$ fgrep [OPTIONS] PATTERNS [FILES]

시작하려면 예제를 사용하기 위해 다음 내용으로 일반 텍스트 파일을 생성해 보겠습니다.

$ cat input.txt

여기에서 샘플 콘텐츠가 포함된 텍스트 파일이 준비되었음을 알 수 있습니다. 이제 다음 몇 가지 예에서 fgrep 명령의 몇 가지 일반적인 예를 살펴보겠습니다.

1. fgrep은 grep 및 egrep 명령과 어떻게 다릅니까?

이름에서 알 수 있듯이 fgrep 명령은 고정 문자열 패턴을 검색하는 데 사용됩니다. 패턴을 정규식 대신 고정 문자열로 해석합니다. 따라서 시간 효율적인 방식으로 검색 작업을 수행합니다.

차이점을 이해하기 위해 점 (.) 문자를 grep 명령과 함께 사용해 봅시다.

이 간단한 정규식은 줄의 끝을 제외한 모든 단일 문자와 일치합니다.

$ grep ha. input.txt

위 출력에서 점 (.) 문자가 텍스트 har, hat 및 has와 일치하는 것을 볼 수 있습니다.

이제 fgrep 명령에 동일한 패턴을 사용하고 결과를 관찰해 보겠습니다.

$ fgrep ha. input.txt

위의 출력에서 명령이 주어진 패턴을 찾는 데 실패했음을 알 수 있습니다.

이는 fgrep 명령이 정규식을 인식하지 못하고 존재하지 않는 패턴인 \ha.”를 검색하려고 하기 때문에 발생합니다.

[ Linux에서 Grep, Egrep 및 Fgrep의 차이점은 무엇입니까? ]

2. 파일에서 패턴을 찾는 방법

input.txt 파일에서 전문 문자열을 검색하는 기본 예제부터 시작하겠습니다.

$ fgrep professionals input.txt

보시다시피 두 곳에서 패턴 매칭이 성공하고 빨간색으로 강조 표시됩니다.

3. 일치하는 패턴의 Grep 출력 색상 설정 방법

이전 예에서 기본적으로 일치하는 패턴이 빨간색으로 강조 표시되는 것을 보았습니다. 그러나 GREP_COLOR 환경 변수에 다른 값을 할당하여 이 동작을 변경할 수 있습니다.

GREP_COLOR 환경 변수에 값 32를 할당하여 일치하는 패턴을 녹색으로 강조 표시해 보겠습니다.

$ export GREP_COLOR=32
$ fgrep professionals input.txt

이제 다음 예제로 이동하기 전에 GREP_COLOR 환경 변수를 설정 해제하여 기본 동작을 활성화합니다.

$ unset GREP_COLOR

4. 파일에서 여러 패턴을 검색하는 방법

경우에 따라 여러 문자열에 대해 패턴 일치를 수행해야 합니다. 이러한 경우 명령줄 인수 대신 텍스트 파일에서 패턴을 제공할 수 있습니다.

별도의 줄에 여러 패턴을 포함하는 텍스트 파일을 만들어 보겠습니다.

$ cat pattern.txt

professionals
website

이제 다중 패턴 일치를 위해 이 파일을 -f 옵션과 함께 사용하겠습니다.

$ fgrep -f pattern.txt input.txt

위의 출력에서 문자열 전문가와 웹 사이트에 대해 패턴 일치가 성공한 것을 볼 수 있습니다.

5. 파일에서 일치 항목 수를 제한하는 방법

기본적으로 fgrep 명령은 전체 파일이 처리될 때까지 패턴 일치를 계속 수행합니다.

그러나 때로는 일치하는 수를 제한해야 합니다. 이러한 경우 다음 명령과 함께 -m 옵션을 사용할 수 있습니다.

$ fgrep -m 1 professionals input.txt

TecMint was started on 15th August 2012 by technical professionals and all the

이 예에서 fgrep 명령은 첫 번째 패턴을 일치시킨 후 파일 처리를 중지합니다.

6. 패턴 검색시 파일명 출력 방법

때로는 특정 패턴이 있는 파일의 이름만 찾으면 됩니다. 이러한 경우 fgrep 명령의 -l 옵션을 사용할 수 있습니다.

$ fgrep -l professionals input.txt

input.txt

여기에서 명령이 일치하는 패턴이 있는 행 대신 파일 이름만 인쇄하는 것을 볼 수 있습니다.

7. 패턴 매칭 실패 시 파일명 출력 방법

이전 예제에서는 패턴 매칭이 성공했을 때 파일명을 출력하는 방법을 살펴보았습니다. 이제 반대 방식으로 작업을 수행하는 방법을 살펴보겠습니다.

파일에서 존재하지 않는 패턴을 찾고 결과를 관찰해 봅시다.

$ fgrep -L non-existing-word input.txt

input.txt

이번 예제에서는 패턴매칭에 실패했을 때 파일명을 출력하는 명령어의 -L 옵션을 사용했습니다.

8. 오류 메시지를 억제하는 방법

오류 처리는 셸 스크립트를 작성하는 동안 중요한 역할을 합니다. 그러나 일부 중요하지 않은 시나리오에서는 오류 메시지를 무시해도 됩니다.

fgrep에서 존재하지 않거나 읽을 수 없는 파일과 관련된 오류를 억제하는 -s 옵션을 사용할 수 있습니다. 이 동작을 더 잘 이해하기 위해 존재하지 않는 파일에서 패턴을 검색해 보겠습니다.

$ fgrep -s professionals non-existing-file.txt
$ echo $?

2

위의 출력에서 명령이 표준 오류 스트림에 오류를 표시하지 않는다는 것을 알 수 있습니다. 그러나 실패는 0이 아닌 반환 값으로 보고됩니다.

이 외에도 파일을 읽을 수 없는 경우에도 동일한 동작을 관찰할 수 있습니다. 따라서 먼저 chmod 명령을 사용하여 파일 권한을 수정합니다.

$ chmod 000 input.txt 
$ ls -l input.txt

이제 패턴을 검색하고 결과를 관찰하십시오.

$ fgrep -s professionals input.txt 
$ echo $?

이 기사에서는 fgrep 명령의 몇 가지 유용한 예에 대해 설명했습니다. 초보자는 일상 생활에서 이러한 예제를 사용하여 Linux로 작업하는 동안 생산성을 향상시킬 수 있습니다.

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