제 블로그를 계속 읽어오신 분이면서 개발자라면 얼마전 제가 썼던 고수를 위한 고전 에디터 vim 포스팅을 기억하실 겁니다. 이 글은 사실 오랫동안 머릿속으로 구상해온 글입니다. 이런식의 글을 한번 써보면 좋겠다~ 하고 오랫동안 머릿속에 구상한 글들은 대부분 반응이 좋습니다. 왜냐하면 생각을 표현하는 글 역시 오래 숙성될수록 맛이 있는 김치와 된장, 또는 와인과 비슷하기 때문입니다. 오랫동안 구상하고 가다듬을수록 당장 급하게 쓸때보다는 좀더 글이 깔끔해지고 깊이가 느껴질 것 입니다.

vim글도 반응은 좋았습니다. IT개발자를 위한 마니아적인 성격의 글임에도 당시 올블로그 오늘의 추천글 2위에 올랐습니다. 여기까지 말하면 으쓱~ 자랑할만 합니다. 그러나 실상은 창피했습니다~ 진짜 고수들의 예리한 댓글 지적을 받았습니다. 반론의 여지도 없는 예리한 지적에 머리를 긁적였습니다.

당시 vim글에서 저는

private String id;
private String password;
private String loginType;
private String telephone;
private String handphone;
private String addr1;
private String addr2;
private String email;
private String fax;
private String company;
문자열 을
System.out.println("id ["+id+"]");
System.out.println("password ["+password+"]");
System.out.println("loginType ["+loginType+"]");
System.out.println("telephone ["+telephone+"]");
System.out.println("handphone ["+handphone+"]");
System.out.println("addr1 ["+addr1+"]");
System.out.println("addr2 ["+addr2+"]");
System.out.println("email ["+email+"]");
System.out.println("fax ["+fax+"]");
System.out.println("company ["+company+"]");

문자열로 한방에 바꾸는 방법을 설명했는데, vim의 매크로 기능을 이용하여 한방에 바꾸는 방법을 설명했습니다. 다양한 키 조합을 쓰는 것이 약간 복잡해 보일 수 있습니다.

more..


그런데 댓글에서 개발자들은 이 문제를 단 한줄로 해결합니다.

쿠크다스님 : 치환기능을 이용하면 좀 더 간단하게 해결할 수 있을 것 같은데요. 백 레퍼런스라는 걸 쓰면 될 겁니다.

골빈해커님 : :%s/private\ String\ \(\w\+\)/System\.out\.println\("\1\ \["\+\1\+"\]"\)/g

(_ _);;;

daewonyoon님 : 저라도 골빈해커님 같이 치환으로 했었겠네요. (블럭지정해서 :<> 로 시작하게) 윈도우 상에서 비주얼 스튜디오로 주로 작업하지만, 대규모의 치환같은 경우에 주로 gvim 을 불러서 작업하네요.

아하~ 정규식을 쓰면 한방에 해결하는구나~ 사실 고수 입장에서는 아무것도 아니지만 저 입장에서는 바다가 깊은지 고수들의 능력이 더 깊은지 해아리기가 어렵다는 것을 다시 절감했습니다.

위의 골빈해커님의 한줄원샷 치환을 보면, 그야말로 정규식을 쓸 경우 어떠한 텍스트라도 자유자재로 다루는 힘을 갖는 것 같습니다. 마치 텍스트를 장난감 가지고 노는 것 같습니다. 그래서 저도 이참에 정규식을 정복하려고 합니다. 마침 이런때~! IBM developerWorks에 바로 나를 위한 기사가 떴습니다.

정규식은 물론 정규식을 응용한 grep 파일검색 sed로 파일 편집하기등의 맞춤기사를 찾았습니다.

초보자를 위한 유닉스 팁과 기교, Part 3: 필터와 정규 표현식


신고
크리에이티브 커먼즈 라이선스
Creative Commons License
Posted by 산골
산골 블로그 소개 저는 하얀머리 개발자와 작가를 꿈꾸는 블로거 산골 입니다. 프로그램 개발자로서 저의 관심사는 개발자의 숨통을 트여준 아이폰 개발, 철학과 같은 깊이가 있는 객체지향 방법론입니다. 글쓰기와 수영을 좋아합니다. 블로그를 통해 관심사를 공유합니다. 제 블로그에 관심 있으시면 아래 RSS나 즐겨찾기로 편하게 구독하세요.

rss Bookmark and Share

댓글을 달아 주세요

  1. BlogIcon 데굴대굴 2009.01.20 14:13 신고  댓글주소  수정/삭제  댓글쓰기

    정규표현식은.. 의외로 쓸데가 많더군요....ㅡ,ㅡ;

  2. bmwmini 2010.09.30 10:41 신고  댓글주소  수정/삭제  댓글쓰기

    와.. 저는 Ultraedit에서 (macro+수작업) 또는 (Replace + Uedit의 간단한 정규식)을 썼는데
    한큐에 해결하는 정규식이 있군요..
    %s/private\ String\ \(\w\+\)/System\.out\.println\("\1\ \["\+\1\+"\]"\)/g