각 줄 끝의 숫자 사이에만 괄호를 추가하세요.

각 줄 끝의 숫자 사이에만 괄호를 추가하세요.

다음 줄이 포함된 파일이 있습니다.

ram_reg_10/raja_reg_9/raghu_reg_8  
abc_reg_4/bcd_reg_5  
cad/pqr_reg_91 

vi 편집기에서 각 줄의 끝에 있는 문자열 "_reg_number"를 [number]로 변환하고 싶습니다.
출력은 다음과 같아야 합니다.

ram_reg_10/raja_reg_9/raghu[8]  
abc_reg_4/bcd[5]  
cad/pqr[91]  

나는 시도했다:

:%s?_reg_[0-9]$?\[[0-9]\]?g

그러나 그것은 다음을 제공합니다:

ram_reg_10/raja_reg_9/raghu[[0-9]]  
abc_reg_4/bcd[[0-9]]  
cad/pqr_reg_91

어떻게 하나요?

답변1

명령 모드에서:

:%s/_reg_\([0-9]\+\)$/[\1]/

\+여기서는 마지막에 하나 이상의 숫자 그룹을 일치시키는 데 사용합니다 . 따라서 이와 같은 행 대체가 없습니다 cad/pqr_reg_.

답변2

이것을 사용하십시오 :

:%s/_reg_\([0-9]*\)$/[\1]/

즉, 로 숫자를 캡처 \(\)다음 로 다시 인쇄합니다 \1. 또한 이 작업은 /g행당 한 번만 수행하면 되므로 필요하지 않습니다.

관련 정보