나는 어제 다음 정규식을 사용해 보았습니다 less
.
^\+1[[:space:]]*$
그리고 그것은 나에게 효과적이었습니다 grep
. 에서는 작동하지 않았기 less
때문에 맨페이지에서 지원되는 내용을 확인하고 다음을 발견했습니다.
/pattern
Search forward in the file for the N-th line containing the pattern. N defaults to 1. The pattern is a regular expression, as recognized by the regular expression library supplied by your system.
The search starts at the first line displayed (but see the -a and -j options, which change this).
나는 이 질문을 했는데 /dev/chat
실제로 어떤 라이브러리가 현재 사용되고 있는지 확인하는 방법은 말할 것도 없고 어떤 라이브러리를 사용할 것인지, 심지어 라이브러리 선택의 우선순위에 대한 합의도 많지 않았습니다. 저는 현재 Fedora 30을 사용하고 있지만 Linux에 구애받지 않는 답변이 되기를 바랍니다.
따라서 질문은 다음과 같습니다.
- 내 시스템에서 제공하는 어떤
less
정규식 라이브러리를 사용할 것인지 어떻게 결정합니까? - 내 시스템에서 제공하는 정규식 라이브러리는 무엇을 의미합니까?
- 제공된 정규식 라이브러리는 어떤 다른 유틸리티와 프로그램에 영향을 줍니까?
- 귀하의 시스템에서 사용할 수 있는 특정 정규식 라이브러리를 언급하는 경우 해당 정규식 라이브러리 페이지에 대한 링크를 제공하십시오(가능한 경우).
ldd
프로그램
[unge@localhost ~]$ ldd "$(command -v less)"
linux-vdso.so.1 (0x00007fff040e0000)
libtinfo.so.6 => /lib64/libtinfo.so.6 (0x00007f6733339000)
libc.so.6 => /lib64/libc.so.6 (0x00007f6733173000)
/lib64/ld-linux-x86-64.so.2 (0x00007f67333be000)
답변1
less
바이너리를 참조하는 경우less --version
어떤 정규식 구현을 사용하고 있는지 알려줍니다.$ less --version less 487 (GNU regular expressions) Copyright (C) 1984-2016 Mark Nudelman less comes with NO WARRANTY, to the extent permitted by law. For information about the terms of redistribution, see the file named README in the less distribution. Homepage: http://www.greenwoodsoftware.com/less
--with-regex
빌드 시 라이브러리는 지정된 값에 따라 결정됩니다./configure
.--with-regex=LIB select regular expression library (LIB is one of auto,none,gnu,pcre,posix,regcmp,re_comp,regcomp,regcomp-local) [auto]
빌드 로그에서 추적됩니다.
이러한 구현 중 일부는 별도의 라이브러리(
pcre
예:)로 사용 가능하고, 다른 구현은 C 라이브러리(gnu
예:)에 포함되어 있으며, 그 중 하나는less
소스 코드(regcomp-local
예:)에 포함되어 있습니다.less
auto
나는 그 표현식이 적어도 옵션의 맥락에서 빌드 시스템에서 사용 가능한 모든 라이브러리를 참조한다고 생각합니다 . 일단 빌드되면 주어진less
바이너리는 정규식 구현을 변경하지 않습니다.전혀.
지원되는 라이브러리는 다음과 같습니다.
- POSIX
regcomp
(버전 문자열에서 "POSIX"로 식별됨); - 폴리 메라 제 연쇠 반응("PCRE");
- GNU C 라이브러리
re_compile_pattern
("GNU"); regcmp
("V8");- Unix V8
regcomp
, 시스템 제공 또는less
자체 복사본(Henry Spencer의 구현, "Spencer V8") re_comp
("BSD").