[맥 터미널 / Unix] grep command의 정규표현식(regular expression)

정규 표현식(Regular Expression)을 이용하여 grep command를 더 강력하게 해주는 예시들입니다. 정규 표현식이란, 각각의 Input 라인에 매치되는 패턴들입니다.

예시

  • [^far]
  • [far$]
  • [^$]
  • [Ff]ar
  • [a-zA-Z0-9]

grep with 정규 표현식 예시

Anchors를 이용한 출력

현재 폴더 내 모든 파일 중 라인의 가장 처음이 “Far”인 라인 출력

입력:

$grep ^Far *

출력:

현재 폴더 내의 모든 파일 중 마지막이 . 으로 끝나는 라인 출력

$grep "\.$" *

example3.txt 파일 내에 공백(space)을 포함한 라인 출력

$grep "^ $" example3.txt

example3.txt 파일 내에 아무 것도 없는 공백 라인 출력

$grep "^$" example3.txt

Character Class를 이용한 출력

  • [:alnum:] – 모든 알파벳, 숫자 = [a-zA-Z0-9]
  • [:alpha:] – 모든 알파벳, 숫자 제외 = [a-zA-Z]
  • [:blank:] – Space와 Tab
  • [:digit:] – 모든 숫자 = [0-9]
  • [:xdigit:] – 16진수 모든 숫자 = [0-9a-fA-F]
  • [:lower:] – 소문자 알파벳 = [a-z]
  • [:space:] – 공백 문자: tab, newline, vertical tab, form feed, carriage return, and space.
  • [:upper:] – 대문자 알파벳 = [A-Z]

example3.txt 파일 내에 알파벳 대문자만 출력

입력:

$grep "[[:upper:]]" example3.txt

출력:

example3.txt 파일 내 알파벳대문자+ar 패턴 출력

입력:

$grep "[[:upper:]]ar" example3.txt

출력:

example3.txt 파일 내에 far나 Far를 포함한 라인 출력

입력:

$grep [fF]ar example3.txt

출력:

혹은, far나 Far가 아닌 라인 검색:

$grep '[^fF]ar' example3.txt

각각의 문자에 대해 모든 대소문자 구별하지 않고 검색:

$grep [Ff][Aa][Rr] example3.txt = $grep -i 'far' example3.txt

맨 앞글자에 알파벳 아무거나 오도록 검색:

$grep [A-Za-z]ar example3.txt

숫자를 제외한 알파벳 문자열 검색:

$grep [A-Za-z] example3.txt

숫자만 검색:

$grep [0-9] example3.txt

Wildcards를 이용한 출력

wildcard들을 이용하면 더욱 더 심도 있는 grep 커맨드를 사용 가능합니다.

wildcard에 대한 자세한 내용은 링크를 참조

  • ? : optional 혹은 최대 1번 매치
  • * : 0번 혹은 그 이상 매치
  • + : 1번 혹은 그 이상 매치
  • {n} : 정확히 n번 매치
  • {n,m} : n부터 m번 사이 매치

example3.txt안에 F로 시작하고 다음 알파벳 2개가 오는 패턴 찾기

입력:

$grep "F[[:alpha:]]\{2\}" example3.txt

출력:

example3.txt 파일 내에 소문자 o로 시작하고, 소문자가 0개 혹은 여러개가 온 후, .(마침표)로 끝나는 패턴 찾기

입력:

$grep "o[[:lower:]]*\." example3.txt

출력:

example3.txt 파일 내에 far를 포함하면서 0개 혹은 다수의 어느 문자열이 위치한 후, away라는 문자열이 있는 패턴 찾기

입력:

$grep “far.*away” example3.txt

출력:


grep command 실행 시 매치되는 패턴에 색깔 입히기

grep --color=always "far" example3.txt

~/.bash_profile 내에 아래 커맨드 등록시, grep command 실행 시 마다 색깔 출력

GREP_OPTIONS="--color=always";export GREP_OPTIONS

참고

1 COMMENT

댓글 남기기