정규표현식이란, 검색에서 사용할 매칭되는 같은 문자들의 패턴을 말한다.

. newline을 제외한 오직 하나의 문자(dot).
예를 들어, “1..e” 정규표현식은 1을 포함하고 두 개의 문자 다음에 e 문자가 나오는 라인을 의미한다.
? 자신 앞에 나오는 정규표현식이 0개이거나 1개인 것과 일치하고 대부분 하나의 문자와 매칭할 때 사용한다.
* 바로 앞의 문자열이나 정규표현식에서 0개 이상 반복되는 문자를 의미한다(asterisk)
+ 자신 앞에 나오는 하나 이상의 정규표현식과 일치한다. *와 비슷하게 동작하지만 반드시 하나 이상과 일치한다.
{N} 정확히 N번 일치한다.
{N,} N번 또는 그 이상 일치한다.
{N,M} 적어도 N번 일치하지만 M번 일치를 넘지 않는다.
- 목록에서 처음과 마지막을 제외한 범위를 의미하거나 목록의 마지막 지점을 의미한다.
^ 라인의 시작에서의 공백 문자열을 의미한다.
또한 목록의 범위에 없는 문자들을 의미한다(charat)
^linux는 linux 문자열로 시작하는 모든 라인을 의미한다.
$ 라인 마지막에서의 공백 문자열을 의미한다. (dollar sign)
linux$는 linux 문자열로 끝나는 모든 라인을 의미한다.
^$ 빈 줄과 일치한다.
[ ] 대괄호(bracket)는 단일 정규표현식에서 문자들을 집합으로 묶어준다.
[xyz]: x, y, z 중 한 문자와 일치한다.
[c-n]: c에서 n 사이에 속하는 한 문자와 일치한다.
[B-Pk-y]: B에서 P까지 또는 k에서 y까지의 한 글자와 일치한다.
[a-z0-9]: 소문자나 숫자 중 한 문자와 일치한다.
[^b-d]: b에서 d 사이의 문자를 제외한 모든 문자를 나타낸다. ^은 바로 뒤에 나오는 정규표현식의 의미를 반대로 해석하도록 한다.
\ 특수문자를 원래의 문자 의미대로 해석한다.(백슬리시, escape)
즉, 메타문자들 앞에 백슬래시()문자를 붙이면 문자 그대로 해석하는 것이다.
\b 단어 끝의 공백 문자열을 의미한다.
\B 단어 끝이 아닌 곳에서의 공백 문자열을 의미한다.
\< 단어 시작에서의 공백 문자열을 의미한다.
\> 단어 끝에서의 공백 문자열을 의미한다.

출처: 김태용, "김태용의 리눅스 쉘 스크립트 프로그래밍 입문", 제이펍, 2009.