다음 줄이 포함된 파일이 있습니다.
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
행당 한 번만 수행하면 되므로 필요하지 않습니다.