본문으로 바로가기

vi 에디터 문자열 변경

category Linux 3년 전

vi 문자열 변환

기본적인 방법

  • :(시작줄),(끝줄)s/원본단어/바꿀단어/옵션
  • 시작줄,끝줄s는 치한활 범위를 행번호로 지정
    • .일 경우 현재 커서가 있는 줄
    • $는 제일 마지막 줄
    • %s는 문서 전체

옵션

  • g
    • 지정한 범위에 해당하는 모든 단어 변경
  • i
    • 대소문자를 구분하지 않고 모두 변경
  • c
    • 단어를 바꿀 때 해당 단어를 변경할지 말지 확인하고 변경 
      • y : 현재 찾은 단어를 변경하고 다음 단어로 이동
      • n : 현재 찾은 단어를 변경하지 않고 다음 단어로 이동
      • a : 현재 찾은 단어부터 이후 모든 단어 변경
      • q : 변경 종료
      • l : 현재 찾은 단어를 변경하고 종료

예제

  • :%s/naver/blog/c
    • 문서 전체에 대해 naver를 blog로 변경하는데 단어마다 확인
  • :5,10s/naver/blog
    • 5~10번째 행에서 각 행 중 먼저 나오는 naver를 blog로 변경
  • :.,.+10s/naver/blog/g
    • 현재 행부터 현재 행 + 10번째 행까지 모든 naver를 blog로 변경
  • :1,$s/naver/blog/i
    • 문서 전체에 대해 대소문자 상관없이 naver를 blog로 변경
  • :%s/naver/blog/gi
    • 문서 전체에 대해 대소문자 상관없이 naver를 blog로 변경

정규표현식 사용

정규표현식

  • 정규 표현식은 하나 이상의 문자열을 한 번에 나타낼 수 있는 패턴으로 반복되는 문자나 일부만 일치하는 문자 등을 표현할 수 있는 식이다.
. : 임의의 한 글자, a.daad, acd, azd, ...
[list] : list 중의 한 글자
[adf] : a 또는 b 또는 f
[a-d] : a, b, c, d
[^adf] : a, d, f를 제외한 나머지 중 한 글자
[adf^] : a 또는 d 또는 f 또는 ^ 중 한 글자
\* : 0번 이상의 반복, a*는 a, aa, aaa, aaaa, ...
**확장 정규표현식**
\+ : 1번 이상의 반복, a+는 aa, aaa, aaaa, ...
| : a | ba 또는 b
() : 그룹으로 (ab|cd)efabef 또는 cdef
? : ab?는 a 또는 ab
{} : 구체적인 숫자, {n, m} n번 이상 m번 이하 반복

예제

  • 복수의 문자열을 하나의 문자열로 변경
    • :%s/[vV]i//g : vi 또는 Vi를 삭제
    • :%s/<.*>//g : html 태그와 같은 등을 삭제
    • :%s/(gnu\|Gnu)/GNU/g : gnu 또는 Gnu를 GNU로 변경
  • 완벽하게 일치하는 문자열 변경
    • :%s/<naver>/blog : 정확히 naver의 단어만 blog로 변경

참고

반응형