Eu estava tentando usar o seguinte regexp less
ontem:
^\+1[[:space:]]*$
, que funcionou para mim em grep
. Isso não funcionou em less
, então eu verifiquei a página de manual para ver o que ela suporta e encontrei isto:
/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).
Fiz essa pergunta no /dev/chat
, e não houve muito consenso (para mim) sobre qual biblioteca é usada, ou mesmo a prioridade na escolha de uma biblioteca, muito menos uma maneira de realmente verificar o que está sendo usado atualmente. Atualmente, uso o Fedora 30, mas espero que as respostas sejam independentes do Linux.
Então, as perguntas são:
- Como determino qual biblioteca regexp é fornecida pelo meu sistema que
less
usaria? - O que significa uma biblioteca regexp ser fornecida pelo meu sistema?
- Que outros utilitários e programas esta biblioteca regexp fornecida afeta?
- Se você mencionar quaisquer bibliotecas regexp específicas que possam ser/são usadas pelo sistema, forneça um link para uma página dessa biblioteca regexp, se possível.
ldd
mostra
[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)
Se você estiver se referindo a um
less
binário,less --version
informará qual implementação de regex ele está usando; por exemploNo momento da compilação, a biblioteca é determinada pelo
--with-regex
dado a./configure
:e rastreado nos logs de compilação.
Algumas das implementações estão disponíveis como bibliotecas separadas (
pcre
por exemplo), outras estão incluídas na biblioteca C (gnu
por exemplo), uma delas está incluída noless
código-fonte (regcomp-local
).Eu acho que a expressão se refere a qualquer biblioteca disponível no sistema em que
less
foi construída, pelo menos no contexto daauto
opção. Uma vez construído, um determinadoless
binário não mudará sua implementação de regex.Nenhum.
As bibliotecas suportadas são:
regcomp
(identificado como “POSIX” na string da versão);re_compile_pattern
(“GNU”);regcmp
(“V8”);regcomp
, fornecido pelo sistema ouless
' cópia própria (implementação de Henry Spencer; “Spencer V8”);re_comp
(“BSD”).