웹사이트 검색

Grep을 사용하여 파일에서 패턴 검색을 수행하는 방법


이 페이지에서

  1. Grep을 사용한 대소문자 구분 검색\n
  2. Grep에서 일치하는 문자열을 포함하는 행과 일치하지 않는 특정 행 표시\n
  3. Grep에서 일치하는 문자열만 출력\n
  4. Grep에서 위치 표시\n
  5. 결론

grep 명령에 대한 첫 번째 기사에서는 도구를 사용하여 단어만 검색하는 방법, 두 단어를 검색하는 방법, 일치하는 단어가 포함된 라인 수를 세는 방법 등 도구가 제공하는 몇 가지 기능을 다루었습니다. 이 외에도 도구는 이해하기 쉽고 유용한 기능을 제공합니다. 이 기사에서는 그 중 몇 가지에 대해 논의할 것입니다.

이 튜토리얼에서 언급된 모든 예제는 Ubuntu 14.04LTS에서 테스트되었습니다. 또한 이 튜토리얼의 모든 grep 관련 예제에 대해 다음 파일(test_file1.txt)을 사용할 것입니다.

Grep을 사용한 대소문자 구분 검색

기본적으로 grep은 대소문자를 구분합니다. 즉, 예를 들어 ABC와 abc를 별도로 취급합니다. 그러나 대소문자를 구분하지 않고 검색하려면 -i 명령줄 옵션을 사용할 수 있습니다.

grep -i [string-to-be-searched] [filename]

예를 들어:

grep -i "linux" test_file1.txt

참고: 패턴(예: 위 예의 linux)뿐만 아니라 grep 매뉴얼 페이지에는 -i 옵션이 입력 파일의 대소문자 구분도 무시한다고 명시되어 있습니다. 발췌 내용은 다음과 같습니다.

 -i, --ignore-case
Ignore case distinctions in both the PATTERN and the input files. (-i is specified by POSIX.)

그러나 Google에서는 입력 파일 관련 동작을 재현할 수 없습니다.

Grep에서 일치하는 문자열을 포함하는 행과 일치하지 않는 특정 행 표시

이 도구를 사용하면 일치하는 문자열이 포함된 줄 뒤, 앞 또는 주변에 지정된 수의 줄을 표시할 수도 있습니다.

-A 명령줄 옵션을 사용하여 일치하는 줄 다음에 N줄을 인쇄합니다.

$ grep -A N [string-to-be-searched] [filename]

예를 들어:

$ grep -A 2 "linux" test_file1.txt

위 명령의 출력은 다음과 같습니다.

마찬가지로 -B 명령줄 옵션은 일치하는 줄 앞에 줄을 표시하는 데 사용됩니다.

$ grep -B N [string-to-be-searched] [filename]

예를 들어:

$ grep -B 2 "linux" test_file1.txt

결과는 다음과 같습니다.

마지막으로 일치하는 줄 주위에 줄을 인쇄하려면 -C 명령줄 옵션을 사용합니다.

$ grep -C N [string-to-be-searched] [filename]

예를 들어:

$ grep -C 2 "linux" test_file1.txt

캡처된 출력은 다음과 같습니다.

Grep에서 일치하는 문자열만 출력

또한 표준 출력에 일치하는 문자열만 인쇄할 수 있습니다(기본적으로 전체 라인이 표시되는 대신). 이 기능은 -o 명령줄 옵션을 사용하여 액세스할 수 있습니다.

$ grep -o [string-to-be-searched] [filename]

예를 들어 요구사항이 파일에서 문자열 "linux"를 검색하는 것이라면(완전한 줄이 인쇄되어서는 안 됨) 다음 명령을 사용합니다.

$ grep -o "linux" [file-name]

* 및 .*와 같은 와일드카드 문자를 사용하여 둘 이상의 문자열을 grep할 수도 있습니다. 예를 들어 "how"에서 시작하여 "linux"로 끝나는 단어 그룹을 grep하려면 다음 명령을 사용할 수 있습니다.

$ grep -o “how.*linux” [file-name]

Grep에서 위치 표시

grep 명령을 사용하면 일치하는 문자열이 있는 행의 바이트 오프셋을 표시할 수도 있습니다. 이 기능은 -b 명령줄 옵션을 사용하여 액세스할 수 있습니다. 그러나이 옵션을 더 잘 사용하려면 일치하는 문자열의 정확한 위치를 표시하는 -o 명령 행 옵션과 함께 사용할 수 있습니다.

$ grep -o -b [string-to-be-searched] [filename]

예를 들어:

$ grep -o -b "for" test_file1.txt

결과는 다음과 같습니다.

결론

이러한 모든 옵션이 매일 필요하지 않을 수도 있지만 언제 유용할지 모르기 때문에 최소한 알고 있어야 합니다. Grep은 정규 표현식과 함께 사용하면 더욱 강력해지지만 그 주제는 다른 날로 미루십시오.