정규 표현식으로
grep (global regular expression print)
- grep 실행 시 matcher를 선택할 수 있다. (기본이 BRE)
- -G: BRE를 사용해서 동작
- -E: ERE를 사용해서 동작
- -P: PCRE를 사용해서 동작
- grep의 주요 옵션
- —color: 매칭에 성공한 부분을 강조하는 색으로 표현
- -o: 매칭에 성공한 곳만 잘라서 표현
- -e PATTERN: 패턴을 여러개 연결해서 사용할 때 사용
- -v: 매치되지 않은 정보들만 표현
문자 지정 | . | 임의의 한 문자 한 개를 의미 |
---|
반복 지정 | ? | 선행 문자 패턴이 0개 혹은 1개를 의미 (ERE) |
반복 지정 | + | 선행 문자 패턴이 1개 이상 반복을 의미 (ERE) |
반복 지정 | * | 선행 문자 패턴이 0개 이상 반복을 의미 |
반복 지정 | {m,n} | 반복수를 직접 지정 (ERE) |
{3}: 3번 반복, {,7}: 7번 이하 반복, {2,5}: 2~5 반복 | | |
위치 지정 | ^ | 라인의 앞부분을 의미 |
위치 지정 | $ | 라인의 끝부분을 의미 |
그룹 지정 | […] | 안에 지정된 문자들 그룹 중에 한 문자를 지정 |
그룹 지정 | [^…] | 안에 지정된 그룹의 문자를 제외한 나머지를 지정 |
기타 | \ | 메타의 의미를 제거 |
기타 | | |
기타 | ( ) | 패턴을 그룹화 하거나 (ERE) |
문자 지정 (.)
$ var3='abc cab cbb ccb zxy cdb c1b c2b c.b c*c 123'
echo $var3
echo $var3 | grep --color 'c.b'
echo $var3 | grep --color 'c\.b'
반복 지정 (Quantifier, 수량자)
수량자는 선행문자패턴 (atom)을 수식하는 기능을 가진다.
- ?는 있거나 없거나를 의미한다.
- *은 선행문자패턴이 0개 이상 존재함을 의미한다.
- can* ⇒ ca, can, cann, cannnn, ….
- +는 1개 이상 존재함을 의미한다.
- can+ ⇒ can, cann, cannnn, ….
- .*은 어떤 문자든지 오거나 아무것도 오지 않거나함을 의미힌다.
- http.* ⇒ http, http://, https, …
- {m, n}은 개수를 직접 지정해서 선행문자패턴의 개수를 지정할 수 있다.
- abc{2,5} ⇒ abcc, abccc, abcccc, abccccc
- {0,} ⇒ *
- {,1} ⇒ ?
- {1,} ⇒ +
위치 지정
패턴의 위치를 지정하는 패턴이다.
- ^ftp: ftp로 시작하는 행을 찾는다.
- ^$: 시작과 끝에 아무것도 없는 행 즉, 비어있는 행을 찾는다.
$:
로 끝나는 행을 찾는다.
그룹 지정
- [a,b,c,d]: a,b,c,d 중에 하나를 의미
- [0-9]: 0,1,2,3,4,5,6,7,8,9 중 하나를 의미
- [a-zA-Z0-9]: 대소문자 알파벳과 숫자를 의미
- [^0-9]: 0에서 9를 제외한 나머지를 의미