Perl 을 모르는 상황에서 Emacs 만큼 강력한 정규표현식 도구가 따로 없습니다. (vim 은 제외 이제 저는 vim 을 마음속에서도 지웠습니다 ㅋㅋ) 

다음과 같은 상황에서 어떻게 이맥스를 이용해서 문자열을 치환하는  지에 관한 예제 입니다. 


1
2
3
4
...

5053
5054  <-- 이게 앞으로 삭제될 예정
5055
..

100000 


이런 상황은 거의 없을 듯 하지만 수동으로 인덱스를 맞춰줄려면 보통의 인내심으로 되는 것이 아닐 것입니다. 이맥스(Emacs) 에서는 정말 간단하게 작업할 수가 있습니다.

5055 ~ 부터 100000 까지 영역(Region) 을 설정해 줍니다. 그리고 



 M-x replace-regexp
  Replace regexp: ^[0-9]+
  Replace regexp with \,(1- \#&)

이 명령을 실행하면 나머지 숫자까지 아름답게 맞춰집니다. 간단히 부연 설명 하자면 \, <-- 다음 나오는 함수를 실행하라는 명령이고요. 1- 는 숫자값을 한개씩 빼라는 이야깁니다. (숫자값을 한개씩 더하는 명령은 1+ 입니다) \#& 는 \& 와 # 을 합친 것 인데요. \& 는 찾은 정규표현식 전체를 의미하고 # 은 찾은 문자열을 숫자로 변환하라는 뜻입니다. 


 

+ Recent posts