4. 복수의 문자열을 하나의 문자열로 바꾸기
이것은 결국 위의 정규표현식을 사용한 패턴을 특정한 문자열로 바꾸는 것이다. 웬만한 vi 기초 문서에서 간단하게라도 다루는 내용이다.:%s/[vV]i//g - vi 또는 Vi 를 null string 으로 치환한다. 즉 삭제한다. :%s/<.*>//g - html 화일에서 태그를 제거하는 경우인데, 이렇게 쓰면 내용 라는 줄이 있을 때 죄다 지워질 것이다. 따라서 <.*> 대신에 <.\{-}> 를 쓰는 게 낫다. ::%s/\(gnu\|Gnu\)/GNU/g - gnu 또는 Gnu 를 GNU 로 치환
간단한 것이니 이 정도로 통과.
[edit]5. 복수의 문자열의 복수의 문자열로 바꾸기
사실 이 얘기를 하고 싶었던 것인데... 이것만 덜렁 쓰기가 뭣해서 서론이 장황해졌다.
핵심은, 괄호를 사용하여 찾는 문자열 쪽에 그룹을 지정한 후에, 바꿀 문자열 쪽에서 그 그룹을 부를 수 있다는 것이다.
\0 은 찾은 문자열 전체 \1 은 첫번째 괄호 \2 는 두번째 괄호 \3 은 세번째 괄호 ...
괄호의 순서는 여는 괄호 "(" 의 순서로 따진다. 또 . 나 [list] 등이 괄호안에 있을 경우는 실제로 검색된 문자열을 의미한다는 것에 유의. 즉 abef 라는 스트링이 있고 \(ab\|cd\)ef 로 검색했다면 \1 은 ab 가 된다.
다음과 같은 경우를 생각해 보자. html 화일 안에 수십개의 링크가 다음과 같이 나열되어 있다.
이것을 내가 위키위키 페이지에 옮기려 한다. (사실 위처럼 깔끔하게 되어 있으면 그냥 html 코드를 써도 되겠지만)
* [http://www.aaa.com aaa] * [http://www.bbb.com bbb] * [http://www.ccc.com ccc] ...
다음의 한 줄로 만사형통.
:%s/
관련 링크:
댓글 없음:
댓글 쓰기