본문 바로가기
Computer Science/[19-상] Linux Bash Script

[Linux_bash] regex: 날짜 형식 바꾸기

by gojw 2020. 2. 11.

 

날짜를 표기하는 방법을 국가마다 다르다.

날짜 형식을 vi 편집기를 이용해서 바꾸는 방법을 알아보자.

 

# 국제 표준 형식인 YYYY-MM-DD 을

DD/MM/YYYY로 바꾸는 경우

 

vi filename

:%s/\(....\)-\(..\)-\(..\)/\3\/\2\/\1/g

아니면 

:%s/\(\d\{4}\)-\(\d\{2}\)-\(\d\{2}\)/\3\/\2\/\1/g

 

:%s ->전체 행을 지칭

\(....\)-\(..\)-\(..\) -> regex를 이용한 패턴

.은 임의의 문자

\(\)를 이용해서 그룹 정하기.

 

\3\/\2\/\1 -> 바꿀 스트링

 

\1은 첫번째 그룹을 의미한다. \(....\)

\2는 두번째 그룹을 의미한다. \(..\)

\3은 세번째 그룹을 의미한다. \(..\)

왼쪽부터 첫번째, 두번째, 세번째이다.

 

/은 정규표현식 문자로 특수한 의미를 가지고 있기 때문에

이스케이프 문자 \를 앞에 써줘야한다.

따라서 \3/\2/\1 이렇게 쓰면 trailing character 오류가 난다.

 

g -> global 찾아진 패턴을 모두 치환

 

두번째 명령어도 같은 원리인데,

\d 는 digit의 약자로 숫자를 의미하고

중괄호로 묶인 숫자는 반복을 의미한다.

 

DD/MM/YYYY를

핀란드식 DD.MM.YYYY로 바꾸는 경우

 

vi filename

:%s/\(..\)\/\(..\)\/\(....\)/\1\.\2\.\3/g

 

# DD.MM.YYYY를 

스페인식 MM-DD-YY로 바꾸는 경우

 

vi filename

:%s/\(..\)\.\(..\)\...\(..\)/\2-\1-\3/g

댓글