모든 숫자를 어떻게 제거 할 수 있습니까? vim을 사용하여 파일의 모든 줄에 (점)을 추가하시겠습니까?

모든 숫자를 어떻게 제거 할 수 있습니까? vim을 사용하여 파일의 모든 줄에 (점)을 추가하시겠습니까?

모든 숫자를 어떻게 제거 할 수 있습니까? (점) 파일 내의 모든 줄에서 vim을 사용합니까? 예를 들어 다음 내용이 포함된 파일이 있습니다.

afsdfsd 0.98096764
afsdfd 0.98196765
0.98096764
afsadfsd 0.98096764
adfsd 0.98096764
aadfsd 0.98096425
0.98096425
afsadfsd 0.98096761

` vim의 일부 기능을 사용하여 숫자의 모든 숫자와 점을 제거하는 방법이 궁금합니다(내 파일에서는 점은 숫자에만 존재합니다).

afsdfsd  
afsdfd  
 
afsadfsd  
adfsd  
aadfsd  
  
afsadfsd  

답변1

:%s/[0-9]\+\(\.[0-9]\+\)\?//g

이 기본 정규식(BRE) 검색 및 바꾸기 작업은 하나 이상의 숫자(선택적으로 점과 하나 이상의 숫자가 뒤따름)를 제거합니다.

vimPCRE는 \d의 동의어로 도 이해되므로 [[:digits:]]다음과 같이 단축할 수 있습니다.

 :%s/\d\+\(\.\d\+\)\?//g

그건 그렇고, 를 :help perl-patterns참조 하십시오 vim.

0-9이는 더 짧을 뿐만 아니라 숫자가 아니거나 고유한 숫자가 아닌 로케일 에서도 작동합니다 .

\vvim을 정규 표현식에 사용하면 vim을 더 짧게(제 생각에는 더 읽기 쉽게) 만들 수 있습니다.환상적이다정규식 패턴:

%s/\v\d+(\.\d+)?//g

:help magic에서도 참조하십시오 vim.

그런데 (예: :%s/[0-9.]\+//g)와 같은 간단한 정규식은 구두점으로 사용된 마침표(예: 문장 끝이나 줄임표 ...)도 제거합니다.

답변2

tr정규식을 사용하여 이를 수행할 수 있지만 필요한 문자 범위를 제거하는 것이 더 간단하다고 생각합니다.

:%!tr -d '.[0-9]'

콜론은 "명령 모드"를 시작합니다. %"전체 버퍼" 를 의미하며 , !"다음 쉘 명령을 통해 지정된 범위(전체 버퍼)를 필터링합니다(즉, 명령의 표준 입력에 입력하고 Vim에서 명령의 표준 출력으로 대체합니다)"를 의미합니다.

답변3

|두 개의 대체 명령을 하나의 기호로 연결할 수 있습니다 . 따라서 먼저 모든 숫자( \d)를 제거한 다음 모든 마침표( )를 제거할 수 있습니다 \..

:%s/\d//g | %s/\.//g

단일 대체 명령에서 파이프를 "OR" 연산자로 사용할 수도 있습니다.

:%s/\d\|\.//g

관련 정보