웹사이트 검색

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


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

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

그러나 Linux에서는 fgrep이 간단한 텍스트 검색에 가장 선호되는 유틸리티입니다. 이 가이드에서는 일상생활에서 사용할 수 있는 fgrep 명령의 몇 가지 연습 예를 논의하겠습니다.

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

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

fgrep [OPTIONS] PATTERNS [FILES]

시작하려면 예제를 사용하기 위해 다음 내용이 포함된 일반 텍스트 파일을 만들어 보겠습니다.

cat input.txt

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

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

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

차이점을 이해하기 위해 grep 명령에 점 (.) 문자를 사용해 보겠습니다.

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

grep ha. input.txt

위 출력에서 점 (.) 문자가 har, hathas.

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

fgrep ha. input.txt

위 출력에서 명령이 지정된 패턴을 찾지 못하는 것을 볼 수 있습니다.

이는 fgrep 명령이 정규식을 인식하지 못하고 존재하지 않는 패턴인 “ha. ”.

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

위 출력에서 professionalswebsite 문자열에 대한 패턴 일치가 성공한 것을 확인할 수 있습니다.

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 $?

9. 부분적으로 일치하는 라인을 제외하는 방법

이전 예에서는 fgrep 명령이 부분 일치를 수행하는 것을 확인했습니다. 그러나 어떤 경우에는 전체 라인에 대해 정확한 일치를 수행해야 합니다. 이러한 경우 fgrep 명령의 -x 옵션을 사용할 수 있습니다.

fgrep -nx "the same site is sometimes hard to find." input.txt

위 출력에서 정확한 줄 일치는 줄 번호 20에서 발생합니다.

10. 재귀적으로 검색하는 동안 파일을 제외하는 방법

검색 작업을 수행하는 동안 특정 파일을 건너뛰어야 하는 경우가 있습니다. 이러한 경우 fgrep 명령의 --exclude 옵션을 사용할 수 있습니다.

이를 이해하려면 먼저 디렉터리를 만들고 여기에 몇 가지 샘플 파일을 복사하세요.

mkdir dir-1
cp input.txt dir-1/input.txt
cp input.txt dir-1/input.data
cp input.txt dir-1/input.md 

이제 “.txt ” 파일을 제외한 dir-1 디렉터리의 모든 파일에서 패턴을 검색해 보겠습니다.

fgrep -r --exclude *.txt professionals dir-1

위 출력에서 “.md ”“.data ” 확장자를 가진 파일에 대해 패턴 일치가 수행된 것을 볼 수 있습니다.

11. 재귀적으로 검색하는 동안 여러 파일 형식을 제외하는 방법

이전 예에서는 특정 확장자를 가진 파일을 제외하는 방법을 살펴보았습니다. 그러나 확장자가 여러 개인 파일을 제외하려는 경우 명령이 길어집니다. 이러한 경우 명령줄 인수 대신 파일에서 제외 패턴을 제공할 수 있습니다.

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

cat skip-pattern.txt 
*.txt
*.data

이제 이 파일을 --exclude-from 옵션과 함께 사용해 보겠습니다.

fgrep -r --exclude-from skip-pattern.txt professionals dir-1

여기서는 확장자가 “.md ”인 파일에 대해서만 패턴 매칭이 수행된 것을 확인할 수 있습니다.

12. 재귀적으로 검색하는 동안 파일을 포함하는 방법

이전 예에서는 검색 작업을 재귀적으로 수행하는 동안 파일을 제외하는 방법을 살펴보았습니다. 이제 역방향으로 작업을 수행하는 방법을 살펴보겠습니다.

fgrep 명령의 --include 옵션을 사용하여 “*.txt ” 확장자를 가진 파일을 검색해 보겠습니다.

fgrep -r --include "*.txt" professionals dir-1

위 출력에서 “*.md ”“*.data ” 확장자를 가진 파일에 대해 패턴 일치를 건너뛰는 것을 볼 수 있습니다.

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

Linux의 fgrep 명령에 대한 다른 최고의 예를 알고 계십니까? 아래 댓글로 여러분의 의견을 알려주세요.