[Linux_bash] regex: 날짜 형식 바꾸기 리눅스_Bash Script



날짜를 표기하는 방법을 국가마다 다르다.
날짜 형식을 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



1 2 3 4 5 6 7 8 9 10 다음