![Vim 편집기를 사용하여 괄호 안의 패턴을 바꾸는 방법](https://linux55.com/image/175285/Vim%20%ED%8E%B8%EC%A7%91%EA%B8%B0%EB%A5%BC%20%EC%82%AC%EC%9A%A9%ED%95%98%EC%97%AC%20%EA%B4%84%ED%98%B8%20%EC%95%88%EC%9D%98%20%ED%8C%A8%ED%84%B4%EC%9D%84%20%EB%B0%94%EA%BE%B8%EB%8A%94%20%EB%B0%A9%EB%B2%95.png)
다음과 같이 :(콜론)으로 구분된 두 개의 필드가 포함된 파일이 있습니다.
Ram:con_[3:4]_aen[52:7]
Rakesh:sync[0:128]
vim 편집기를 사용하여 대괄호 [] 안의 :(콜론)을 다음과 같이 !로 변환해야 합니다.
Ram:con_[3!4]_aen[52!7]
Rakesh:sync[0!128]
나는 이것을 시도했지만 위에 표시된 결과를 얻지 못했습니다.
:%s/[%d:%d]/[%d!%d]/g
답변1
당신이 사용할 수있는:
%s/\(\d\+\)\@<=:/!/g
\(\d\+\)
소수 찾기
\@<=
긍정적으로 되돌아보세요. 뒤로 본다는 것은 이전 패턴(이 경우 위의 패턴)이 다음 기호와 일치해야 함을 의미합니다. VIM이 이를 달성하는 방법에 대해 자세히 알아볼 수 있습니다.여기.
:
성냥':'.
답변2
당신은 그것을 사용할 수 있습니다
:%s/\([[0-9]\+\):\([0-9]\+]\)/\1!\2/g
요소 를 그룹화 하고 [number1
첫 번째 요소 와 두 번째 요소를 number2]
복사 하고 그 사이에 하나를 배치했습니다 .\([[0-9]\+\)
\([0-9]\+]\)
\1
\2
!
예전에는 하나 이상의 숫자를 의미했지만 콜론과 각 괄호 사이에 항상 숫자가 있다고 확신한다면 [0-9]\+
다음과 같이 단순화할 수 있습니다(0개 이상의 숫자를 의미함).[0-9]*
:%s/\([[0-9]*\):\([0-9]*]\)/\1!\2/g
답변3
:%s/\v\(\[[0-9]+):([0-9]+\])/\1!\2/g
\v
추가 정규식 기능 활성화
(\[[0-9]+)
왼쪽 괄호와 최소 한 자리 숫자로 구성된 캡처 그룹
:
원하지 않는 콜론
([0-9]+\])
하나 이상의 숫자와 닫는 괄호로 구성된 캡처 그룹
\1!\2
원하는 캡처 그룹과 폭발의 내용