정규표현식을 사용할 수 있는 명령어를 쓸 때
특정 패턴을 그룹 지어놓으면 편리할 때가 많다.
그룹을 짓는 방법: \(패턴\)
예를 들어서
1. 특정 문자 패턴이 반복되는 것을 찾을 때
찾고싶은 것이 특정 년도의 뒷자리 2개와 날짜가 같은 경우라고 생각하자.
YYYY/MM/DD
-> 이 두개가 같은 경우
grep '..\(..\)/../\1' filename
..: 처음의 점 두개는 YYYY 이다.
\(..\): 뒤의 점 두개 (YYYY)는 그룹으로 묶었다.
점은 임의의 문자 하나를 의미한다.
/../: 월(month)를 의미
\1: 첫번째 그룹을 의미
이렇게 같은 패턴이 나중에 또 나올 때
그룹으로 묶어서 불러오면 편리하다.
불러오는 방법은 \1, \2 .. 와 같이 백슬래쉬 뒤에 숫자를 붙인다.
숫자는 그룹이 지어진 순서대로 (=왼쪽부터) 1,2,3,.. 이다.
2. filed 별로 순서를 바꿀 때
AA BB 와 같은 문자열을
BB AA 로 순서를 바꾸는 경우라고 생각하자.
vi에서 치환한다.
vi filename
:%s/\(..\) \(..\)/\2 \1/g
3. 패턴 전이나 후에 문자를 추가할 때
AA BB 와 같은 문자열을
BB and AA 로 바꾸는 경우라고 생각하자.
이럴 때도 vi에서 치환한다.
vi filename
:%s/\(..\) \(..\)/\2 and \1/g
바꿀 스트링을 쓰는 곳에
그룹을 불러오면서 원하는 문자를 추가할 수 있다.
'Computer Science > [19-상] Linux Bash Script' 카테고리의 다른 글
[Linux_bash] regex,vi: 큰 수를 영어 숫자 단위(B,M,K)로 변경하기 (0) | 2020.02.29 |
---|---|
[Linux_bash] find,rm,cp: | (파이프라인) 이 작동하지 않을 때 (0) | 2020.02.29 |
[Linux_bash] pr,sed,grep: 문서 양식화하고 여백 지우기 (0) | 2020.02.29 |
[Linux_bash] redirection 이해하기 (0) | 2020.02.20 |
[Linux_bash] regex,sort: 엑셀 파일에서 column 별로 sort하기 (0) | 2020.02.20 |
댓글