테이블에 데이터를 넣으려고 csv 파일을 만지다 보면 한글 또는 영어와 같은 문자열 값을 큰따옴표로 감싸야 하는 작업을 반복하게 된다. 레코드의 양이 많으면 상당히 노가다를 하게 되는데 이를 정규식으로 해결할 수 있다.
핵심이 되는 정규표현식 : ([^0-9,][^,]*)
gvim에서 다음과 같이 정규식을 사용하면 테이블의 모든 문자열 필드의 값을 큰따옴표 안에 넣을 수 있다.
:%s/\([^0-9,][^,]*\)/"\1"/g
다음과 같은 예제에서 실패했음을 발견했다.
7부능선 => 7"부능선"
필드의 값이 숫자로 시작하는 경우를 고려하면 다음처럼 변경해야 한다.
:%s/\([0-9]\{0,\}[^0-9,][^,]*\)/"\1"/g
{0,} 는 * 과 같은 의미이므로 다음과 같이 간결하게 변경할 수 있다.
:%s/\([0-9]\{0,\}[^0-9,][^,]*\)/"\1"/g => :%s/\([0-9]*[^0-9,][^,]*\)/"\1"/g
핵심이 되는 정규표현식 : ([^0-9,][^,]*)
gvim에서 다음과 같이 정규식을 사용하면 테이블의 모든 문자열 필드의 값을 큰따옴표 안에 넣을 수 있다.
:%s/\([^0-9,][^,]*\)/"\1"/g
1,coin,10,스피커,음질좋음 => 1,"coin",10,"스피커","음질좋음"
다음과 같은 예제에서 실패했음을 발견했다.
7부능선 => 7"부능선"
필드의 값이 숫자로 시작하는 경우를 고려하면 다음처럼 변경해야 한다.
:%s/\([0-9]\{0,\}[^0-9,][^,]*\)/"\1"/g
1,coin,10,7부능선,능선이다 => 1,"coin",10,"7부능선","능선이다"
{0,} 는 * 과 같은 의미이므로 다음과 같이 간결하게 변경할 수 있다.
:%s/\([0-9]\{0,\}[^0-9,][^,]*\)/"\1"/g => :%s/\([0-9]*[^0-9,][^,]*\)/"\1"/g
'vim' 카테고리의 다른 글
정규표현식 이용해서 문자열 순서 바꾸기 (0) | 2012.11.14 |
---|---|
[gVim] 찾은 내용 하이라이트 (0) | 2011.06.08 |
[gVim] 유용한 단축키 (0) | 2011.04.19 |