제 블로그를 계속 읽어오신 분이면서 개발자라면 얼마전 제가 썼던 고수를 위한 고전 에디터 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나 즐겨찾기로 편하게 구독하세요.

구글 리더에 추가 위자드닷컴에서 구독 Bookmark and Share