Vim을 사용하여 문자가 N개 이상 나타나는 모든 줄을 어떻게 찾나요?

Vim을 사용하여 문자가 N개 이상 나타나는 모든 줄을 어떻게 찾나요?

|(파이프) 문자가 21번 이상 나타나는 파일의 모든 줄을 찾으려고 합니다 . 문자 는 필드 구분 기호이므로 인스턴스 |사이에 포함될 수 있는 특정 문자 수는 없습니다 . |Vim에서 이 작업을 쉽게 수행할 수 있는 방법이 있나요?

참고: 저는 Windows 시스템에서 gVim을 사용하고 있으므로 *nix 관련 트릭을 사용할 수 없습니다.

티아

답변1

일반 검색 기능으로 정규식을 사용하여 해당 행을 찾을 수 있습니다.

/\v(\|[^|]*){21,}

정규식 \v은 옵션 값에 관계없이 작동합니다 . (밑줄을 제외한 영숫자가 아닌 모든 문자를 특별하게 만듭니다. 또한 , , 및 magic앞에 백슬래시를 넣을 필요가 없도록 여기서도 사용합니다 .)(){}

이러한 모든 행을 한 번에 보려면 다음 :g명령과 결합할 수 있습니다.

:g/\v(\|[^|]*){21,}/p

덧붙여서, 이런 유형의 명령은 (전- 전임자vi)는 도구 이름의 출처입니다 grep( g/re/p: re는 regexp의 약자).


소스 데이터가 "파이프 구분"인 경우 값에 파이프 문자가 포함되어 있는지 확인해야 합니다(이스케이프(예: 백슬래시 접두사 사용), 이중화 또는 인용을 통해 수행할 수 있음). 위의 정규 표현식 방법은 대부분의 이스케이프 및 이중화 방법을 포괄하도록 확장될 수 있지만 인용된 값을 구문 분석하려면 일반적으로 대부분의 정규 표현식 언어가 제공할 수 있는 것보다 강력한 표현력이 필요합니다.

관련 정보