본문 바로가기

OS/Linux

Linux - Vi editor에서 문자열 치환(replace) 방법

728x90

vi는 Unix와 Linux 계열에서 사용되는 텍스트 에디터로, 텍스트 기반의 사용자 인터페이스를 제공합니다.

vi editor는 모달을 기반으로 작동하며, 주로 세 가지 모드를 사용합니다:

  • 일반 모드 (Normal Mode): 텍스트를 삭제하거나 복사하는 등의 편집 작업을 할 수 있습니다.
  • 삽입 모드 (Insert Mode): 텍스트를 추가하거나 수정할 때 사용합니다.
  • 명령 모드 (Command Mode): 파일을 저장하거나 종료하는 등의 명령을 입력할 수 있습니다.

* vim 이란? vi의 기능을 확장하여 고급 편집 기능과 사용자 맞춤 설정을 제공하는 상위 호환 텍스트 에디터 *

vi editor에서 문자열 치환해 보기 (기본)

Linux 환경에서 스크립트를 작성하다 보면 특정 단어를 다른 단어로 교체(replace) 해야 하는 상황이 종종 있습니다. 

 

1. 명령 모드로 전환

vi에 들어가면 기본적으로 일반 모드(normal mode)입니다. 문자열 치환을 위해서는 명령 모드(command mode)로 전환해야 하므로, ESC를 누른 후 : (콜론)을 입력하여 명령 모드로 들어갑니다.

 

2. 문자열 치환 명령어

:%s/[기존단어]/[변경단어]/[옵션]
  • %는 파일 전체를 대상으로 치환을 적용한다는 의미입니다.
  • s는 substitute(치환)를 나타냅니다.
    주로 사용하는 옵션은 아래와 같습니다.
  • g는 global의 약자로, 한 줄에 여러 개의 해당 문자열이 있을 경우 모두 치환하라는 의미입니다.
  • i는 대·소문자 구분 없이 치환할 때 사용합니다.
  • c는 치환 전 확인 요청할 때 사용합니다.
  • n은 치환할 항목의 숫자를 헤아릴 때 사용합니다. (치환은 하지 않음)
  • p는 치환된 각 줄을 출력합니다. (치환 결과 확인용)

ex) 'samso' -> 'samso_good'

:%s/samso/samso_good/gc			// 모든 samso -> samso_good 으로 치환 전 사용자 확인

 

3. 명령 실행

명령 모드에서 위와 같은 명령어를 입력하고 'Enter' 키를 누르면 문자열이 치환됩니다.

 

4. 변경 사항 저장 및 종료

명령 모드로 전환하여 vi editor를 저장 및 종료해야 변경 사항이 적용됩니다.

:wq

 

 

반응형

 

 

vi editor에서 문자열 치환해 보기 (응용)

문자열을 치환하다 보면 경로나 공백을 치환해야 하는 경우가 발생합니다.

 

1. 경로 치환하기 ( / 슬래쉬 포함)

슬래쉬 '/'는 특수 문자로, 특수 문자 앞에 필수로 붙여야 하는 '\'를 활용하면 됩니다.

:%s/기존\/문자열/새\/문자열/g

 

ex) /samso/test.txt -> /samso_good/test.txt

:%s/\/samso\/test.txt/\/samso_good\/test.txt/g

 

2. 개행문자 치환

파일의 모든 줄 바꿈 문자를 없애야 하는 상황엔 아래와 같이 치환하면 됩니다.

:%s/\n//g			//  '\n' 라는 개행문자를 '' 공백으로 전역치환

 

3. 공백문자 치환

파일의 모든 공백 문자를 없애야 하는 상황엔 아래와 같이 치환하면 됩니다.

:%s///g

 

 

주의사항

  • 문자열 치환 시 기본적으로 대·소문자를 구분하므로 정확한 문자열 입력이 필요합니다.
  • 개행 문자를 다룰 때는 문서의 형식과 필요한 결과에 주의를 기울여야 합니다.
  • 불필요하게 문서의 구조를 변경할 수 있으므로, 치환 작업 전에는 반드시 문서를 백업하는 것이 좋습니다.
728x90
반응형