|
(파이프) 문자가 21번 이상 나타나는 파일의 모든 줄을 찾으려고 합니다 . 문자 는 필드 구분 기호이므로 인스턴스 |
사이에 포함될 수 있는 특정 문자 수는 없습니다 . |
Vim에서 이 작업을 쉽게 수행할 수 있는 방법이 있나요?
참고: 저는 Windows 시스템에서 gVim을 사용하고 있으므로 *nix 관련 트릭을 사용할 수 없습니다.
티아
답변1
일반 검색 기능으로 정규식을 사용하여 해당 행을 찾을 수 있습니다.
/\v(\|[^|]*){21,}
정규식 \v
은 옵션 값에 관계없이 작동합니다 . (밑줄을 제외한 영숫자가 아닌 모든 문자를 특별하게 만듭니다. 또한 , , 및 magic
앞에 백슬래시를 넣을 필요가 없도록 여기서도 사용합니다 .)(
)
{
}
이러한 모든 행을 한 번에 보려면 다음 :g
명령과 결합할 수 있습니다.
:g/\v(\|[^|]*){21,}/p
덧붙여서, 이런 유형의 명령은 (전- 전임자vi)는 도구 이름의 출처입니다 grep
( g/re/p
: re는 regexp의 약자).
소스 데이터가 "파이프 구분"인 경우 값에 파이프 문자가 포함되어 있는지 확인해야 합니다(이스케이프(예: 백슬래시 접두사 사용), 이중화 또는 인용을 통해 수행할 수 있음). 위의 정규 표현식 방법은 대부분의 이스케이프 및 이중화 방법을 포괄하도록 확장될 수 있지만 인용된 값을 구문 분석하려면 일반적으로 대부분의 정규 표현식 언어가 제공할 수 있는 것보다 강력한 표현력이 필요합니다.