vim2011. 6. 14. 20:00
테이블에 데이터를 넣으려고 csv 파일을 만지다 보면 한글 또는 영어와 같은 문자열 값을 큰따옴표로 감싸야 하는 작업을 반복하게 된다. 레코드의 양이 많으면 상당히 노가다를 하게 되는데 이를 정규식으로 해결할 수 있다.

핵심이 되는 정규표현식 : ([^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
Posted by 준피