带有初学者示例的 Grep 命令教程

在本教程中,我们将学习 “grep” 命令。 Grep 代表 G球状的 r有规律的 电子表情 p林特. 顾名思义,Grep 用于搜索具有以下内容的文本文件 常用表达 (不久 正则表达式)。 它在文本文件中打印与给定模式匹配的行。 如果没有给出文件,grep 将在当前目录中的文件中递归搜索给定的模式。 Grep 有两种变体,即 埃格雷普fgrep. 不推荐使用这些变体,但提供这些变体是为了向后兼容。 您可以分别使用“egrp”和“fgrep”,而不是使用“grep -E”和“grep -F”。 事不宜迟,让我们开始吧。

内容

  1. Grep 命令示例
    1. egrep 命令示例
    2. fgrep 命令示例
      1. grep 的词源
    3. 帮助我们帮助您:

Grep 命令示例

我有一个名为的文件 文件.txt 用一些随机的词。 让我们看看file.txt:

$ cat file.txt ostechnix Ostechnix o$technix linux linus unix technology hello world HELLO world

要开始搜索,只需键入 grep 后跟您要查找的内容以及从何处查找。 例如,我要查找字符串 “尼克斯” 在文件.txt 中。 为此,我运行:

$ grep nix file.txt

示例输出:

ostechnix Ostechnix o$technix unix

正如您在上面的输出中看到的,我们得到了两个包含匹配模式“nix”的词。 如果搜索字符串有两个词,请在单引号内提及它们,如下所示。

$ grep 'hello world' file.txt  hello world

你也可以使用 -n 在输出中显示行号的标志:

$ grep -n nix file.txt

示例输出:

1:ostechnix 2:Ostechnix 3:o$technix 6:unix

当您使用非常长的代码时,这会很有用。

请注意 grep 区分大小写. 例如,当您搜索 “你”,它不会显示包含大写字母的行,即 Os。

检查以下示例。

$ grep os file.txt  ostechnix

但是,我在 file.txt 中有另一个名为“Ostechnix”的词,但 grep 没有列出它。

但是,如果您想忽略区分大小写,可以使用 “-一世” 标志如下。

$ grep -i os file.txt  ostechnix Ostechn1x
$ grep -i 'hello world' file.txt  hello world HELLO world

现在,grep 不关心大小写,我们得到了结果中同时包含大写和小写字母的单词。

我们还可以将命令的输出通过管道传输到 grep。 看看下面的例子。

$ cat file.txt | grep os ostechnix

现在看看我们有什么。 file.txt 的输出通过管道传送到 grep 中,并显示了 file.txt 中包含字母“os”的单词。

我们还可以在 grep 中使用一些特殊字符或正则表达式。

  • ^ – 在行首搜索。
  • $ – 在行尾搜索。
  • . – 搜索任何字符。

让我向您展示一个示例,以便您了解在何处以及如何使用这些特殊字符。

你已经知道了,我们可以搜索包含字符串的单词 “技术” 像下面。

$ grep tech file.txt ostechnix Ostechnix o$technix technology

但是,如果您只想搜索仅以“tech”一词开头的行呢? 您不想显示包含该字符串的所有单词,而只想显示以字符串“tech”开头的单词。 这也是可能的。 这是特殊字符派上用场的地方。

要在文件的行首搜索与模式“tech”匹配的单词,请运行:

$ grep ^tech file.txt technology

同样,我们可以搜索以特定字母结尾的单词,例如 “X”,如下图。

$ grep x$ file.txt ostechnix Ostechnix o$technix linux unix

此外,您可以使用以下方法找到包含任何字符的单词 . (点)。

例如,让我们搜索任何具有 “n” 在文件中。

$ grep .n file.txt ostechnix Ostechnix o$technix linux linus unix technology

您现在应该对 grep 的用法有了基本的了解。 让我们继续学习其他两个变体,即 埃格雷普fgrep.

egrep 命令示例

埃格雷普 代表 电子扩展的 格雷普. 它类似于 “抓地力-E” 命令。 它会完成 grep 会做的所有事情。 但是,它提供了一些额外的功能,例如使用复杂的正则表达式,而不是开箱即用的普通 grep 命令。

例如,我们可以搜索以任一开头的任何单词 “我” 或者 “这”.

请记住,我们使用插入符号 (^) 来搜索行首的单词。 因此,我们对上述查询的命令将是:

$ egrep '^(l|o)' file.txt ostechnix o$technix linux linus

看? 我们已经得到了所有以“l”或“o”开头的单词。 请注意,普通的 grep 命令无法做到这一点。

同样,我们可以搜索以“l”到“u”之间的任何字符范围开头的行。 这意味着,我们将得到以 l、m、n、o、p、q、r、s、t 和 u 开头的行。 结果中将省略其他所有内容。

$ egrep '^[l-u]' file.txt ostechnix o$technix linux linus unix technology

请注意,我已经使用 方括号 ([) to search for the range of words. Since grep is case-sensitive, it is not going to find lines that starts with uppercase letters in the given range.

To display all the lines that starts with both upper and lower case letters, we use:

$ egrep '^[l-u]|[L-U]' 文件.txt

或者,

$ egrep '^([l-u]|[L-U])' file.txt

示例输出:

ostechnix Ostechnix o$technix linux linus unix technology HELLO world

看? 现在我们得到了以字符范围“l”到“u”(大写或小写)开头的单词。

fgrep 命令示例

fgrep 代表 FAST 格雷普. 它类似于 “抓地力-F”. fgrep 无法识别正则表达式或特殊字符。 fgrep 可用于您希望评估正则表达式的地方。

例如,我们使用以下命令查找以 “X”.

$ grep x$ file.txt ostechnix Ostechnix o$technix linux unix

现在使用 fgrep 运行相同的命令。

$ fgrep x$ file.txt

它不会显示任何内容,因为它无法评估特殊字符。

现在让我们看另一个例子。 搜索与字符串匹配的单词 “o$” 使用 grep 命令,我们执行以下操作:

$ grep o$ file.txt

但是,我们什么也没得到,为什么? 因为,根据上面的命令,我们使用美元符号($)来查找以“o”结尾的单词。 由于 file.txt 中没有以“o”结尾的字符,因此我们什么也得不到。

现在,使用 fgrep 运行相同的命令。

$ fgrep o$ file.txt  o$technix

看? 这是我们使用 fgrep 命令的地方。 它只是忽略美元符号(当然是特殊字符)并显示包含字符串“o$”的单词。

有关 grep 的更多详细信息,请键入:

$ grep --help

它将提供所有可能的选项。 或者,参考手册页。

$ man grep

建议阅读:

  • 学习有效地使用手册页

grep 的词源

Grep 是一夜之间写的 肯·汤普森,就是写 Unix 的那个人。 但它为什么以及如何得名呢? 教授 布赖恩·克尼汉 在此视频中解释了 grep 的词源。

就这样。 Grep 是您应该彻底学习的重要命令之一。

您现在知道什么是 grep 以及如何使用它在 GNU/Linux 中搜索具有匹配模式的文本文件。 您还了解了 Grep 是如何得名的。 希望这是有用的。

感谢您的光临!

帮助我们帮助您:

  • 订阅我们的电子邮件通讯: 立即注册
  • 支持 OSTechNix : 通过贝宝捐赠
  • 下载免费电子书和视频: TradePub 上的 OSTechNix
  • 联系我们: Facebook | 推特 | 谷歌加 | 领英 | RSS订阅

祝你有美好的一天!!

CLIegrepfgrepgrepLinuxLinux 命令