云网牛站
所在位置:首页 > Linux教程 > 在Fedora系统中使用grep进行搜索,附介绍ripgrep的安装

在Fedora系统中使用grep进行搜索,附介绍ripgrep的安装

2019-08-21 15:27:13作者:大力稿源:云网牛站

如果你使用Fedora系统不仅仅是浏览网页,你可能需要在文件中搜索文本,例如,你可能是一个开发人员,无法记住你在哪里留下了一些代码段,或者你可能正在寻找存储在系统配置文件中的设置,无论是什么,有很多方法可以在Fedora系统上搜索文本,本文将向你展示如何使用内置实用程序grep。

在Fedora系统中使用grep进行搜索,附介绍ripgrep的安装

 

介绍grep

grep实用程序允许你在文件系统上搜索文本或更具体的文本模式,名称grep来自全局正则表达式print,这是因为正则表达式(或正则表达式)是一种定义文本模式的方法。

grep实用程序可让你查找并打印出这些模式的匹配项,即名称,它是一个功能强大的系统,你甚至可以在Visual Studio Code或Atom等现代代码编辑器中找到它,参考在Fedora 30/29/28系统上安装Visual Studio Code的方法

 

常用表达

利用正则表达式的所有功能是一个比本文更大的主题。当然,最简单的正则表达式可以只是一个单词,也可以是单词的一部分,该模式只是“the following characters, in the same order.”逐行搜索模式,例如:

1、pciutil  - 匹配任何时候7个字符pciutil一起出现 - 包括pciutil,pciutils,pciutil123和foopciutil。

2、^pciutil  - 匹配任何时候7个字符pciutil一起出现在一行的开头(这就是^代表的)。

3、pciutil$  - 匹配任何时候7个字符pciutil一起出现在一行之前(这就是$代表的)。

更复杂的表达也是可能的,正则表达式中使用特殊字符作为通配符,或更改正则表达式的工作方式,如果要匹配其中一个字符,请在字符前使用\(反斜杠)。

例如,。 (句点或句号)是匹配任何单个字符的通配符,如果在表达式pci.til中使用它,它匹配pciutil,pci4til或pci!til,但与pcitil不匹配,必须有一个符合的角色,在正则表达式中。

?是正则表达式中的标记,将前一个元素标记为可选,因此,如果你构建在前面的例子上,表达式pci.?til也会在pcitil上匹配,因为在i和t之间不需要有一个字符用于有效匹配。

+和*是表示重复的标记,+表示前一个元素中的一个或多个,*表示零或更多,所以regex pci.+til会匹配以下任何一个:pciutil,pci4til,pci!til,pciuuuuuutil,pci423til。它不匹配pcitil  - 但是regex pci.*til会的。

 

grep的例子

现在你对正则表达式了解一点,让我们把它付诸实践,想象一下,你正在尝试查找提及用户帐户jpublic的配置文件,你已经尝试了一堆文件,但没有一个是正确的,你确定它在那里,因此,尝试搜索/etc文件夹(使用sudo,因为某些子文件夹在root帐户外部无法读取):

$ sudo grep -r jpublic /etc/

-r开关以递归方式搜索文件夹,该实用程序打印匹配文件列表以及命中发生的行,在大多数现代终端环境中,命中是彩色突出显示,以提高可读性。

想象一下,你在/home/shared中有更多的文件选择,你需要确定哪些文件提到了MacNulty这个名字,但是,你不确定大小写是否一致,而你只是在寻找文件的名称,而不是上下文,此外,你认为有些人可能在某些地方拼错了McNulty的名字。

使用-l开关只输出带匹配的文件名,a?名称中可选a的标记,以及-i使搜索不区分大小写:

$ sudo grep -irl 'ma\?cnulty' /home/shared

此命令将匹配Macnulty,McNulty,Mcnulty和macNulty等字符串,没有任何问题,你将获得一个简单的文件名列表,其中在内容中找到匹配项。

这些只是使用grep和正则表达式的最简单方法,你可以使用info grep命令了解更多信息。

参考:在Linux系统下使用grep命令搜索文件的详细用法

 

介绍ripgrep

grep命令很不错,但在某些情况下可能不如新的搜索实用程序有效。例如,ripgrep实用程序被设计为快速搜索实用程序,可以取代grep。

重要的是要注意ripgrep有自己的命令行开关和语法,例如,它有简单的开关,只打印文件名匹配,反转搜索和许多其他有用的功能,它也可以基于放在任何子目录中的.rgignore文件来忽略。(另外值得注意的是-r开关对ripgrep的使用方式不同,因为它是自动递归的。)

要安装,请使用以下命令:

$ sudo dnf install ripgrep

要浏览选项,请使用手册页(man rg),你会发现许多选项与grep相同。

 

相关主题

RipGrep 0.10.0下载及安装使用:命令行下超快的文本搜索工具

精选文章
热门文章