这是我使用的最少的:
less 458 (POSIX regular expressions) Copyright (C) 1984-2012 Mark Nudelman
在Vim中它是\<和\>,在大多数其他正则表达式中它是\b。
\<
\>
\b
ohfgkhjo1#
字符类[[:<:]]和[[:>:]]分别匹配OS X 10.11.5上系统less中的单词开头和结尾。我还没有找到一种方法来使文档中的简写形式\<、\>或\b工作。(感谢denis建议检查man 7 re_format。
[[:<:]]
[[:>:]]
less
man 7 re_format
lvmkulzt2#
您的less版本是用posix正则表达式构建的,如下所示:
wget http://ftp.gnu.org/gnu/less/less-451.tar.gz tar zxf less-451.tar.gz cd less-451 ./configure --with-regex=posix make
然而,显然\<是否工作的原因并不取决于此:
--with-regex
pcre
总之,我不知道如何使它与\<一起工作。但是你可以用pcre构建自己,然后它应该与\b一起工作。如果你不是系统管理员,你可能想使用--prefix安装在你的主目录下,例如--prefix=$HOME/opt。在make步骤之后,确认它可以在./less /path/to/some/file上工作。如果看起来不错,那么就用make install完成。
--prefix
--prefix=$HOME/opt
make
./less /path/to/some/file
make install
6kkfgxo03#
首先查看您的计算机上的man 7 re_format是否有“增强功能”部分,其中列出了\<等。如果有,请更改less-451/pattern.h中的一行:
less-451/pattern.h
#define REGCOMP_FLAG REG_ENHANCED // not REG_EXTENDED
然后./configure --with-regex=posix; make less将理解\<。这在Macosx 10.8上有效;在其他系统上,请尝试遵循/usr/include/regex.h。(Gnu.org有一打Regular-expression-syntaxes?!)
./configure --with-regex=posix; make less
/usr/include/regex.h
8mmmxcuj4#
less通常使用vi语法,即\<和\>,除非它是使用--with-regex=none配置选项编译的,或者在编译时找到的正则表达式库不提供单词边界搜索。您的系统也可能提供不同的语法。
vi
--with-regex=none
pxyaymoc5#
在我的macOS v12.6.3系统上,以下代码启用了类似vim的\b字边界搜索:
brew install less echo PAGER='less' hash -r # in bash, to discover new, homebrew-based less(1) path
Fyi:
$ less --version | head -2 less 608 (PCRE2 regular expressions) Copyright (C) 1984-2022 Mark Nudelman $
更多,关于我的测试系统的相关细节:https://gist.githubusercontent.com/johnnyutahh/0ca86ec252f832cfc512eaf56acecc3c/raw
5条答案
按热度按时间ohfgkhjo1#
字符类
[[:<:]]
和[[:>:]]
分别匹配OS X 10.11.5上系统less
中的单词开头和结尾。我还没有找到一种方法来使文档中的简写形式\<
、\>
或\b
工作。(感谢denis建议检查
man 7 re_format
。lvmkulzt2#
您的
less
版本是用posix正则表达式构建的,如下所示:然而,显然
\<
是否工作的原因并不取决于此:\<
也可以正常工作,使用posix regex--with-regex
的所有可能值,除了pcre
,\<
不适用于其中任何一个。如果我使用pcre
构建,则\b
可以工作,而不是\<
。总之,我不知道如何使它与
\<
一起工作。但是你可以用pcre
构建自己,然后它应该与\b
一起工作。如果你不是系统管理员,你可能想使用--prefix
安装在你的主目录下,例如--prefix=$HOME/opt
。在make
步骤之后,确认它可以在./less /path/to/some/file
上工作。如果看起来不错,那么就用make install
完成。6kkfgxo03#
首先查看您的计算机上的
man 7 re_format
是否有“增强功能”部分,其中列出了\<
等。如果有,请更改less-451/pattern.h
中的一行:然后
./configure --with-regex=posix; make less
将理解\<
。这在Macosx 10.8上有效;在其他系统上,请尝试遵循
/usr/include/regex.h
。(Gnu.org有一打Regular-expression-syntaxes?!)
8mmmxcuj4#
less
通常使用vi
语法,即\<
和\>
,除非它是使用--with-regex=none
配置选项编译的,或者在编译时找到的正则表达式库不提供单词边界搜索。您的系统也可能提供不同的语法。pxyaymoc5#
在我的macOS v12.6.3系统上,以下代码启用了类似vim的
\b
字边界搜索:Fyi:
更多,关于我的测试系统的相关细节:https://gist.githubusercontent.com/johnnyutahh/0ca86ec252f832cfc512eaf56acecc3c/raw