Grep命令:从终端查找文本的强大工具

Grep命令

几乎任何拥有计算机或可以使用计算机的人都将知道键盘快捷键Ctrl + F来查找文本。 “ F”来自英语中的“查找”,“查找”,可用于例如在网页上查找文本。 此快捷方式在许多应用程序中也可用,有些程序使用“ B”表示“搜索”,但是这些快捷方式仅在我们位于应用程序内部且打开文件的情况下才有效。 在Linux中,我们有非常强大的工具,可以从终端启动,如果需要的话 找到我们团队中的任何文本,我们将使用以下命令 grep的.

grep的 此命令将帮助我们在所指示的文件中查找文本。 它的名称来自g / re / p,这是一个在Unix / Linux文本编辑器中用于类似功能的命令。 像许多其他命令一样, grep的 有很多 我们将以字母形式添加的可用选项 并且每个人将执行不同的任务。 通过组合这些选项,我们将能够在一个或多个文件中执行复杂的搜索。 在这里,我们向您展示您需要了解的所有内容。

grep的 我们将在任何文件中找到任何文本

首先,我们将解释可用的选项:

  • i:不会区分大小写。
  • w:强迫它只找到特定的单词。
  • v:选择不匹配的行。
  • n:显示带有要求的单词的行号。
  • h:从输出的Unix文件名中删除前缀。
  • r:递归搜索目录。
  • R:像-r一样,但遵循所有符号链接。
  • l:仅显示带有选定行的文件名。
  • c-所选行的每个文件仅显示一个计数。
  • -颜色:以颜色显示匹配的图案。

在您标题为本文的图像中,我在该路径中的文件“ 830.desktop”中查找了“图像”一词。 如您所见,我写了:

grep Imágenes /home/pablinux/Documentos/830.desktop

请记住,在本文中,我们将编写必须根据搜索首选项进行修改的示例。 通过说“文件”,“单词”等,我们将引用文件及其路径。 如果我刚刚编写了“ grep Images 830.desktop”,我将收到一条消息,指出该文件不存在。 除非文件位于根目录中,否则大约是这样。

其他示例是:

  • grep -i图片/home/pablinux/Documentos/830.desktop,其中“图片”是我们要查找的单词,其余的是文件及其路径。 本示例将在不区分大小写的文件“ 830.desktop”中搜索“图像”。
  • grep -R图片:它将搜索目录的所有行及其找到“ images”一词的所有子目录。
  • grep -c示例test.txt:这会寻找我们,并显示“示例”出现在名为“ test.txt”的文件中的总次数。

与grep 我们也可以搜索文件

如果要查找文件830.desktop,我们将编写以下命令:

grep 830.desktop

这将执行 在我们的个人文件夹中搜索“ 830.desktop”文件也就是说,如果该文件位于另一个用户的个人文件夹中,则将找不到该文件。 这是世界上最正常的事情,因为用户没有密码就没有权限访问他人的内容。

如何执行递归搜索

grep的 它也允许我们 根据经常性规则或准则进行搜索。 例如,读取每个目录中包含单词“ Pablinux”的所有文件。 为此,我们将编写:

grep -r Pablinux /home/

好吧:

grep -R Pablinux /home/

我们将在单独的行上看到“ Pablinux”的结果,并在其开头找到文件的名称。 如果我们不想在数据输出中看到文件名,我们将使用-h选项(“隐藏”;隐藏):

grep -h -R Pablinux /home/

我们可以加入选项并在不带引号的情况下写上“ -hR”。

如何进行精确的单词搜索

有时有些文件包含我们想要搜索的东西。 例如,这可以用复合词出现在我们身上,通过搜索“森林”,我们可以找到“游侠”。 如果我们要 找到一个确切的词 我们将使用-w选项:

grep -w bosques /home/pablinux/Documentos/vacaciones.txt

上面的命令将在指示路径中的文件“ vacation.txt”中搜索“森林”,而忽略护林员。 如果我们想要搜索两个不同的单词,我们将使用以下命令 埃格雷普:

egrep -w bosques|plantas /ruta/del/archivo

知道一个单词在文件中出现多少次

grep的 它也有能力 计算一个单词出现多少次 在一个文件中。 为此,我们将使用-c选项:

grep -c prueba /ruta/al/archivo

添加选项-n,我们将看到单词出现的行号。

反向查询

我们也可以做相反的事情,即 搜索不包含单词的行。 为此,我们将使用-v选项,如下所示:

grep -v la ruta/al/archivo

上面的命令将显示所有不包含单词“ the”的行。 这可以在文档或列表中派上用场,在该文档或列表中,一个单词会重复多次,并且由于某种原因,我们需要访问其余各行。

使用访问系统信息 grep的

电脑型号

grep的 它不仅能够在文件内搜索。 也是 能够查看系统信息。 在上一个屏幕截图中,我们可以看到它如何向我们展示我们拥有哪种型号的PC(我知道它不是世界上功能最强大的笔记本电脑)。 为此,我们使用了以下命令:

cat /proc/cpuinfo | grep -i 'Model'

好吧:

grep -i 'Model' /proc/cpuinfo

如果要查看磁盘单元的名称,我们将编写:

dmesg | egrep '(s|h)d[a-z]'

如何仅列出匹配的文件名

如果我们只想看到一个列表,其中仅包含与搜索匹配的文件名,我们将使用-l选项,如下所示:

grep -l 'main' *.c

如果我们想用彩色看到这个词,我们会这样写:

grep --color palabra /ruta/al/archivo

如您所见,该命令 grep的 是一个 非常强大的工具 这是值得的,尤其是在我们不记得自己在哪里写东西或在编程中的情况下。 此外,它还可以帮助我们以终端爱好者喜欢的方式找到系统信息。 该命令有关查找文本的指南是否对您有用 grep的?


发表您的评论

您的电子邮件地址将不会被发表。 必填字段标有 *

*

*

  1. 负责数据:MiguelÁngelGatón
  2. 数据用途:控制垃圾邮件,注释管理。
  3. 合法性:您的同意
  4. 数据通讯:除非有法律义务,否则不会将数据传达给第三方。
  5. 数据存储:Occentus Networks(EU)托管的数据库
  6. 权利:您可以随时限制,恢复和删除您的信息。

  1.   诺德里

    您好!
    当您说Grep也用于搜索文件时,我认为这是不正确的,因为如果您运行grep EXPRESSION并且不将文件传递给它,它将等待来自标准输入的数据输入。
    根据手册页:
    grep在命名的输入文件中搜索包含与给定PATTERN匹配的行。 如果未指定文件,或者给出文件“-”,则grep搜索标准输入。
    因此,您可以在管道中使用它,就像通过将此命令的输出作为输入传递给grep来解析/ proc / cpuinfo的输出那样,就可以进行搜索。
    问候

  2.   安娜

    很好的帖子。
    您可以很好地解释它,然后直接进行讨论。