vi에서 정규식을 검색하고 바꾸시겠습니까?

vi에서 정규식을 검색하고 바꾸시겠습니까?

정규식을 사용하여 문자열을 여러 줄에 나타나는 문자 "x"로 바꾸고 싶습니다.

문제는 예를 들어 다음을 포함하는 파일에서 x를 단어 뒤에 정수가 오는 x로 바꾸는 것입니다.

x44name
xjanname
x50name

예를 들어:

:1,2s/x[0-9]name/num/g

단어를 검색하고 바꾸려면 sed 또는 다른 명령을 사용해야 합니까?

다음 오류가 발생합니다.

E486: Pattern not found: x[0-9]name

답변1

0을 포함하여 원하는 수의 숫자를 가질 수 있는 경우 다음을 수행해야 합니다.

:%s/x[0-9]*name/num/g

항상 둘이라면

:%s/x[0-9][0-9]name/num/g

물론 [0-9] 대신 \d를 사용할 수도 있습니다.

:%s/x\d*name/num/g
  • %s전체 파일 검색을 나타냅니다.
  • s현재 행만 검색됨을 나타냅니다.

  • g주어진 행의 모든 ​​일치 항목을 나타냅니다.

  • g가 없으면 각 줄의 첫 번째 항목만 바꾸는 것을 의미합니다.

답변2

제가 올바르게 이해했다면 "num"은 "x" 다음의 숫자입니다. 다음 사항을 이해해 주시기 바랍니다.

:%s/x\([0-9]\)/\1/g

관련 정보