vi 에디터에서 원하는 문자열을 찾고  찿은 문자열을 바꾸고 하는 작업에 대하여 살펴 보도록 하겠습니다.

 

특히 윈도우 시스템에서 파일을 저장 하였을때 라인의 맨 마지막에 "^ M" 문자열이 포함되어 리눅스의 vi에서는  "^ M" 문자열이 보이는 경우가 있습니다.

 

이와 같은 경우, "^ M" 문자열을 일일히 하나씩 지우는 것은 매우 귀찮은 일이라 생각 됩니다.

 

vi에서 원하는 문자열을 찿는 방법을 먼저 알아 보고, 바꾸는 것도 해보도록 하겠습니다.

 

vi에서는 모드가 있습니다. 즉 편집(입력) 모드와 명령 모드로 구분이 됩니다.

 

알려드릴 내용은 편집(입력)  모드가 아닌 명령 모드에서 실행을 합니다.

 

기본적으로 vi를 이용하여 파일을 열게 되면 명령 모드로 실행을 합니다.

 

명령 모드에서 원하는 문자열을 찾기 위해서는 "/" 를 누릅니다. 그러면 vi에서 화면의 맨 마지막에 "/"가 보입니다.

이때 자신이 찾으려는 문자열을 입력한후 엔터를 치면 파일의 맨 처음 부터 문자열을 찾게 됩니다.

 

문자열을 찾은후 "n"을 누르면 순차적으로 찾으려는 문자열을 매칭해 가며 찿을 수 있습니다.

역방향으로 찾기위해서는 "N"을 누르면 역방향으로 찾으려는 문자열을 매칭하여 찾을 수 있습니다.

 

 자 이제 원하는 문자열을 찾고  찿은 문자열을 바꾸고 하는 작업을 해보도록 하겠습니다. 

마찬가지로 명령 모드에서 ":"을 입력하면 vi에서 화면의 맨 마지막에 ":"이 보입니다.

이제 아래와 같이 사용을 하면 문자열을 바꾸는 작업을 수행 할 수 있습니다.

 

:s/old/new<엔터> 현재 줄의 처음 old를 new로 교체
:s/old/new/g<엔터> 현재 줄의 모든 old를 new로 교체
:%s/old/new/g<엔터> 문서 전체에서 old를 new로 교체

문저 전체 에서 위에서 예로든 "^M" 을 찾고 그 문자열을 없애는 예제를 해보도록 하겠습니다.

:%s/<Ctrl+v><Ctrl+M>//g<엔터>

 문서 전체에서 "^M" 를 없앨 수 있습니다.

 

이상으로 vi에서 문자열을 찾고  찿은 문자열을 바꾸고 하는 작업에 대하여 알아 보았습니다.