여러 줄로 여러 줄을 검색하는 방법은 무엇입니까?


18

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

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


\n+하나 이상의 줄 바꿈 을 시도 했습니까 ?
Brock Hensley

어떤 Linux 배포판이며 환경 변수 "LESS"를 정의 했습니까?
harrymc 2012

@harrymc 여러 줄 검색에 어떻게 도움이됩니까?
sashoalm

정보 수집.
harrymc

2
less( search.c:search_range()) 의 소스 코드를 검토 한 결과 불가능합니다 . 검색 / 일치 작업은 한 번에 하나의 줄 바꿈으로 구분 된 행에서 수행되므로 행 경계에서 일치시킬 수 없습니다. 에 line.c:forw_raw_line()의해 호출 된 "readline"의 구현을 참조하십시오 search_range.
zackse 2019

답변:


7

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

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

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

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


2

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

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

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

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


1
그러나 이것은 vim이 아니라 덜 중요하기 때문에 질문에 대답하지 않습니다. 의견이어야합니다.
sashoalm

1
@sashoalm 아직도 답변을 시도하고 있으므로 아래로 투표하고 계속 진행하겠습니다. 솔루션을 찾는 사람들은 하나의 도구를 구체적으로 사용하지 않을 수 있습니다.
slhck

2

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

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

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

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

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

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.