如何使用 less 使用模式修饰符进行不区分大小写的搜索?

Posted

技术标签:

【中文标题】如何使用 less 使用模式修饰符进行不区分大小写的搜索?【英文标题】:How do you do a case insensitive search using a pattern modifier using less? 【发布时间】:2010-09-06 05:17:11 【问题描述】:

似乎唯一的方法是在您最初运行较少时传递 -i 参数。有谁知道一些秘密的黑客来做这样的事情

/something to search for/i

【问题讨论】:

【参考方案1】:

您还可以在 less 运行时键入命令 -I。它为搜索切换区分大小写。

【讨论】:

-i 表示在不包含大写的搜索中忽略大小写,而 -I 在所有搜索中忽略大小写。 “在不包含大写的搜索中忽略大小写”在 vim 和 ack 中称为“智能大小写”。在这里添加这个是为了便于谷歌搜索。 @HelloGoodbye 你不“运行命令”只是输入它,我也被措辞弄糊涂了。 -I 就像在字面上输入 -I 一样少打开。【参考方案2】:

也可以设置环境变量LESS

我使用LESS=-Ri,这样我就可以将grep 的彩色输出泵入其中,并保持ANSI 颜色序列。

我发现的另一个很少使用的 less 功能是以 +F 作为参数开始它(或在 less 中按 SHIFT+F)。这会导致它跟随您打开的文件,就像tail -f <file> 一样。如果您正在查看来自应用程序的日志文件,并且可能希望进行分页备份(例如,如果它每秒生成 100 行日志记录),这将非常方便。

【讨论】:

跟随 less 比跟随 tail 有用得多。尤其是有很多动作的日志。 @Svish 你可以说less 更多:) @MartinKonecny less 可能更多,但less 不是more 更不用说most @sanmiguel 我不太了解,试过了,横向滚动真的很酷,谢谢 less 大于moremost 大于less | less 更多,但moremore 更多,所以more 更少less,所以如果您想要更少more,请使用更多less【参考方案3】:

补充@Juha 所说的:实际上-i 使用SmartCasing 打开不区分大小写,即如果您的搜索包含大写字母,则搜索将区分大小写,否则将不区分大小写.把它想象成 Vim 中的:set smartcase

例如:使用 -i,在 'Log,..' 中搜索 'log' 将匹配,而在 'log,..' 中搜索 'Log' 将不匹配。

【讨论】:

实际上,如果 any 字母,而不仅仅是第一个,是大写的,搜索将区分大小写。一个重要的区别(以及我更喜欢它的方式)。这也是 vim 的 smartcase 的工作原理。 在 Vim 中你也可以说 /\clog 来切换到不区分大小写的搜索。【参考方案4】:

您似乎可以像这样在每次搜索的基础上调用此功能:

less prompt> /search string/-i

此选项位于less 的交互式帮助中,您可以通过h 访问:

less prompt> h
...
  -i  ........  --ignore-case
                  Ignore case in searches that do not contain uppercase.
  -I  ........  --IGNORE-CASE
                  Ignore case in all searches.
...

我没有仔细检查,但在 MacOS 和其他 Linux 发行版上的 less 版本 487 中的帮助列出了此选项可用。

在 MacOS 上,您还可以通过 brew 安装更新版本的 less

$ brew install less
$ less --version
less 530 (POSIX regular expressions)
Copyright (C) 1984-2017  Mark Nudelman

参考文献

less is always case-insensitive

【讨论】:

@IlikeSerena - 这可能是less 特定版本的问题。 @slm which less 你试过这个吗?不要在我的less 458 (GNU regular expressions) 上工作(aptitude 说less 458-2 FWIW) @hdl - 我目前无法访问系统,但我使用的是 Fedora 19/20 中包含的 less 的任何版本。 @slm 谢谢,可能是比 458-2 更新的版本,例如 458-6,因为根据koji.fedoraproject.org/koji/packageinfo?packageID=759,这个特定版本是在 2014 年 2 月 10 日为 Fedora 构建的,因为你发布了这是 2014 年 2 月 22 日... 不适用于少于 487(POSIX 正则表达式)的 mac 【参考方案5】:

使用-i标志时,一定要完整输入小写的搜索字符串,因为如果任何字母是大写的,那么它就是完全匹配的。

另请参见:less(1) 的 -I(大写 i)标志以更改此行为。

【讨论】:

以上是关于如何使用 less 使用模式修饰符进行不区分大小写的搜索?的主要内容,如果未能解决你的问题,请参考以下文章

JavaScript RegExp 对象

正则匹配修饰符

正则匹配修饰符

PHP正则表达式模式修饰符详解

JavaScript RegExp(正则表达式) 对象

十三Nginx Location