정규표현식이란?
특정한 규칙의 문자열 집합을 표현하는 데 사용하는 형식 중 하나
정규식 메타 문자
메타 문자 | 의미 | 메타 문자 | 의미 |
^ | 문자열의 시작 | \d | 숫자 |
$ | 문자열의 끝 | \D | 숫자가 아님 |
. | 하나의 문자와 대응 | \w | 알파벳 대소문자, 숫자, 언더스코어(_) |
\s | 공백문자 | \W | \w가 아님 |
\S | 공백문자가 아님 | \n | 개행문자 |
\ | 메타 문자를 문자 그대로 사용 | \t | 탭 문자 |
선택 패턴
- | 를 사용하면 A|B의 패턴으로 매칭 가능 (A 또는 B 중 하나)
- [ ] : 괄호 속 문자 중 하나에 매칭 ([] 내의 ^ 기호는 not의 의미)
- [0-9] : 0~9 중 숫자 하나에 매칭
- [A-Z] : 알파벳 대문자 하나에 매칭
수량 한정자
- ? : 0개 or 1개
- * : 0개 이상
- + : 1개 이상
- {n} : n개
- {n, m} : n개 이상 m개 이하
- {n, } : n개 이상
그룹 패턴
() 괄호는 그룹(패턴 내에서 하나로 묶이는 패턴)을 나타낸다. 한 번 생성한 그룹은 재사용 가능하며, 만들어진 순서대로 1, 2, 3번으로 참조 가능
정규 표현식 사용 예시 - 전화번호
^010(\D?\d{4}){2}
// ^010 : 시작문자는 010
// \D? : 숫자가 아닌 문자가 0개 이상 (-)
// \d{4} : 숫자 4개
// ( ~ ){2} : 그룹 2개
grep 명령이란?
파일 내에서 지정한 패턴이나 문자열을 찾은 후에 그 패턴을 포함하고 있는 모든 행을 출력한다.
grep [option] [pattern] [파일명]
option
- -i : 대소문자를 구분하지 않고 검색
- -v : 패턴과 일치하지 않는 행을 출력
- -c : 패턴과 일치하는 행의 개수 출력
- -w : 패턴과 단어 단위로 매칭되는 경우 출력
// helloworld.txt 파일에서 'hello'라는 문자열을 가진 행을 모두 출력
grep hello helloworld.txt
// 'hello'라는 문자열을 가진 행의 수 출력
grep -c hello helloworld.txt
// 숫자가 존재하는 행을 모두 출력
grep [0-9] helloworld.txt
// 현재 디렉토리의 모든 파일에서 Hello.Linux.World를 찾아 출력
grep "Hello\.Linux\.World" *
grep과 정규표현식
// somecode 파일에서 #으로 시작하지 않는 행을 모두 출력
grep -v ^# somecode
// helloworld 파일에서
// 대문자로 시작하고
// 공백을 포함한 여러 문자가 나오며
// e로 끝나는 단어가 포함된 행을 모두 출력
grep '\<[A-Z].*e\>' helloworld
'Backend > Linux' 카테고리의 다른 글
[Linux] 리눅스 명령어 (0) | 2024.03.21 |
---|