[Linux9] REGEX (Regular Expression)

Sinaenjuni·2023년 7월 8일
0

Linux

목록 보기
10/11

정규 표현식으로

grep (global regular expression print)

  • grep 실행 시 matcher를 선택할 수 있다. (기본이 BRE)
    - -G: BRE를 사용해서 동작
    • -E: ERE를 사용해서 동작
    • -P: PCRE를 사용해서 동작
  • grep의 주요 옵션
    • —color: 매칭에 성공한 부분을 강조하는 색으로 표현
    • -o: 매칭에 성공한 곳만 잘라서 표현
    • -e PATTERN: 패턴을 여러개 연결해서 사용할 때 사용
    • -v: 매치되지 않은 정보들만 표현

POSIX REGEX: meta char.

문자 지정.임의의 한 문자 한 개를 의미
반복 지정?선행 문자 패턴이 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' # meta charactor(.)의 의미가 사라져 문자열로 취급된다.

반복 지정 (Quantifier, 수량자)

수량자는 선행문자패턴 (atom)을 수식하는 기능을 가진다.

  • ?는 있거나 없거나를 의미한다.
    • X?ML ⇒ XML or ML
  • *은 선행문자패턴이 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를 제외한 나머지를 의미

0개의 댓글