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)
如果您指的是
less
二进制文件,less --version
它将告诉您它正在使用哪个正则表达式实现;例如在构建时,库由
--with-regex
给定的 to确定./configure
:并在构建日志中进行跟踪。
其中一些实现可作为单独的库(
pcre
例如)提供,其他实现包含在 C 库中(gnu
例如),其中一个包含在less
源代码中(regcomp-local
)。我认为该表达式指的是系统上可用的任何库,至少
less
在选项的上下文中。auto
构建后,给定的less
二进制文件不会更改其正则表达式实现。没有任何。
支持的库是:
regcomp
(在版本字符串中标识为“POSIX”);re_compile_pattern
(“GNU”);regcmp
(“V8”);regcomp
,由系统提供或less
自己的副本(Henry Spencer 的实现;“Spencer V8”);re_comp
(“BSD”)。