[맥 터미널 / Unix] grep 커맨드의 정규 표현식(regular expression) 활용

이전 글에 이어 grep 커맨드에 정규 표현식(Regular Expression)을 활용하는 방법에 관한 글입니다. grep 커맨드의 패턴 찾기 기능을 더 강력하게 해주는 예시들을 모아 정리하였습니다. 아래 목록을 참고하시어 필요한 내용 확인 바랍니다.


grep + 정규 표현식 예시

정규 표현식에 관한 기능적인 내용보다 예시를 위주로 기록해두었습니다.

 

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를 이용한 출력

Wildcards(와일드 카드)를 이용하면 더욱 깊이 있는 grep 커맨드를 사용하실 수 있습니다.

  • ? : 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

출력 ▼


이상입니다.

참고

1 COMMENT

댓글 남기기