여러 줄로 여러 줄을 검색하는 방법은 무엇입니까? 리턴과 줄 바꿈을 포함하는 패턴?

에서 less, 당신은 사용하여 검색 할 수 있습니다 /캐리지 리턴과 줄 바꿈을 포함하는 패턴? 검색에서 줄 바꿈$어떻게 포함합니까? 에서를 사용하여 패턴이 줄로 끝날 수 있다는 것을 알고 있지만 여러 줄에 걸쳐있는 텍스트와 일치하려면 패턴이 필요합니다.

나는 시도 \n했지만 n문자 만 검색 합니다.



답변

검색 기능은 less한 번에 하나의 줄 바꿈으로 구분 된 줄에서 작동 하기 때문에 줄 경계를 넘길 수 없습니다 . 이는 시스템 정규식 구현 (GNU, POSIX, PCRE 등)에 관계없이 적용됩니다.

의 메인 라인 개발을위한 공식 소스 저장소를 찾을 수 없지만 less여기서 코드 검토를 위해 다음 링크는 FreeBSD contrib 트리에서 온 것입니다.

검색 작업 구현에 대해서는 search.c : search_range () 를 참조하십시오 . 루프는 line.c : forw_raw_line () 을 호출 하여 다음 줄 바꾸기로 구분 된 내용 블록을 검색합니다. 이 블록은 검색 패턴 (정규 표현식)이 실행되는 match.c : match_pattern ()으로 전달됩니다 .

여러 줄에 걸쳐 일치 시키려면 다른 도구를 사용해야합니다. 한 가지 옵션은 편집기에 들어가서 다른 사람들이 제안한대로 검색 기능을 사용하는 것입니다. 당신은 눌러 편집기를 호출 할 수 있습니다 v에서 less.


답변

어떻게해야할지 모르겠지만 less에서 동일한 작업을 수행 할 수 있습니다 vim.

http://vim.wikia.com/wiki/Search_across_multiple_lines

/PATTERN1\\_.\\{-}PATTERN2

원자 \\_.는 줄 끝을 포함한 모든 문자를 찾습니다. 멀티 \\{-}는 가능한 적은 일치합니다.


답변

less사용하는 ed정규 표현 구문과 여러 불행히도 매칭을 지원하지 않는다.

https://www.gnu.org/software/gnulib/manual/html_node/ed-regular-expression-syntax.html#ed-regular-expression-syntax

나는 그것을 찾거나 적어도이 구문 비트가 다음에서 사용되었는지를 바랐다 less.

RE_DOT_NEWLINE이 비트가 설정되면 모든 문자 일치 연산자가 줄 바꿈과 일치합니다. 이 비트가 설정되지 않으면 설정되지 않습니다.

따라서 .+패턴을 사용 하여 줄 바꿈을 일치 시킬 수 있습니다 . 그러나 아닙니다.


답변